Compare commits

...
Author SHA1 Message Date
Ulrich Drepper 313f9d1cdb Restore locking in free_check.
This code is only used when MALLOC_CHECK_ is used.  Then some bogus
crashes and/or assert could result from the locking changes.  The code
ain't fast.
(cherry picked from commit cc49a5a883)
2009-11-23 18:16:32 +01:00
Andreas Schwab dacc52e192 glibc 2.10.2 release 2009-11-16 17:59:45 +01:00
Roland McGrath 56ddc4bb74 New simplified make dist using git archive.
(cherry picked from commit 6cfe8609b8)
2009-11-16 17:58:50 +01:00
Andreas Schwab 6c7deb9def Correct readahead syscall wrapper on powerpc32.
Due to alignment of 64bit parameters there is a dummy second argument.
But other than that the syscall arguments are directly mapped to the
function arguments.
(cherry picked from commit 5b55d23611)
2009-11-13 15:09:58 +01:00
Jakub Jelinek 710cfbb02e Fix preadv, pwritev and fallocate for -D_FILE_OFFSET_BITS=64.
As reported in http://bugzilla.redhat.com/533063 , preadv/pwritev prototypes
are wrong on 32-bit arches with -D_FILE_OFFSET_BITS=64 and as I've just
found, fallocate is wrong too.
The problem is that only off_t is remapped to the 64-bit type transparently,
__off_t is not.
(cherry picked from commit 34df851b33)
2009-11-13 15:09:12 +01:00
H.J. Lu 44dbdf3777 Support binutils 2.100 and 3.0.
(cherry picked from commit 0549ce8ec1)
2009-09-18 20:10:05 +02:00
Andreas Schwab 2efa76efeb Fix malformed #pragma.
(cherry picked from commit 3d60eb1734)
2009-09-18 20:10:02 +02:00
Ulrich Drepper d636be38ab Fix endless loop in localedef.
localedef got into an endless loop in case order_start was used for
the unnamed_section twice and the first use didn't actually result
into any definition.
(cherry picked from commit 7a7e49c020)
2009-09-18 20:10:00 +02:00
Ulrich Drepper 36157661ee Handle POSIX2_LINE_MAX in getconf.
(cherry picked from commit d76da20f7f)
2009-09-18 20:09:59 +02:00
H.J. Lu a4a10e2d63 Support binutils 2.20.
(cherry picked from commit 4c14c8c348)
2009-09-18 20:09:59 +02:00
Ulrich Drepper 290e2ca5da Fix whitespaces.
(cherry picked from commit 01034d7590)
2009-09-18 20:09:56 +02:00
Suzuki Poulose c2c83ab3c0 Fix timer_create to initialize timer_t properly.
(cherry picked from commit 38eb613663)
2009-09-18 20:09:50 +02:00
Andreas Schwab ebe5fd942f Fix lookup of group names in hesiod initgroups.
Resolving names from a grplist entry actually never worked.
(cherry picked from commit 2eeb9a5d73)
2009-09-18 20:04:24 +02:00
Andreas Schwab f771e5b84d Fix fsetpos on wide stream.
(cherry picked from commit 5d2e69766a)
2009-09-18 20:04:02 +02:00
Andreas Schwab 70fb5f24b6 Cleanup _IO_wfile_seekoff.
This reformulates the in-buffer optimisation check to match the code in
_IO_new_file_seekoff.  No functional changes, but easier to understand.
(cherry picked from commit d840539e12)
2009-09-18 20:03:28 +02:00
Joshua W. Boyer f603960ee0 Fix use of 64-bit insn in 32-bit memcpy for POWER6.
(cherry picked from commit a050d2a5e7)
2009-09-18 20:01:01 +02:00
Ulrich Drepper ccdf9fd82b Fix problems with memory allocation in assert.
In case the allocator is corrupted and an assert triggers, we shouldn't
allocate any more memory.  Use a private assert definition which doesn't
use malloc.

(cherry picked from commit b5c03e105c)
2009-09-18 19:59:51 +02:00
Ulrich Drepper 18655a1455 Add local assert function to avoid problems with memory allocation in
the real one.

(cherry picked from commit 72f9026327,
one merge conflict within whitespace changes resolved)
2009-09-18 19:57:22 +02:00
Andrew Stubbs f9ec44fb98 SH lowlevellock broken for FUTEX_CLOCK_REALTIME.
(cherry picked from commit 7812c65b90)
2009-09-18 17:54:56 +02:00
Joseph Myers a5b9372e3d Fix generic fdiml.
(cherry picked from commit e9f145cba8)
2009-09-18 17:52:27 +02:00
Ulrich Drepper a4a88a24a9 Fix overflow handling in fdim.
(cherry picked from commit f0c281e072)
2009-09-18 17:48:09 +02:00
Roland McGrath 68941973fa Fix td_ta_map_lwp2thr logging and early sanity check.
(cherry picked from commit a0e25a886a)
2009-09-18 17:41:22 +02:00
Ulrich Drepper 3262a69480 Extend last test case.
(cherry picked from commit a1ed6c284a)
2009-09-18 17:41:15 +02:00
Ulrich Drepper c4ae002d9d Add test case for last fixed regex bug.
(cherry picked from commit 8a7cea0199)
2009-09-18 17:41:08 +02:00
Ulrich Drepper 03cb6a1e39 Recognize ill-formed { } expressions in regcomp.
(cherry picked from commit 52db8039f5)
2009-09-18 17:41:02 +02:00
Ulrich Drepper bf1f1f4e4a Also correct _POSIX2_* constants in case older standards are selected.
(cherry picked from commit bdc7f5d76b)
2009-09-18 17:40:54 +02:00
Ulrich Drepper 969cfcda4c Define _POSIX_VERSION correctly when older POSIX versions are selected.
(cherry picked from commit c6b6723e6b)
2009-09-18 17:35:45 +02:00
Ulrich Drepper 4701db37e5 Add CFI directives to x86-64 pthread_rwlock_unlock.
(cherry picked from commit ae0d545003)
2009-09-18 17:15:40 +02:00
Ulrich Drepper 4deedd0948 Add CFI directives to x86-64 pthread_rwlock_{rd,wr)lock.
(cherry picked from commit 1bc2b97ee4)
2009-09-18 17:15:07 +02:00
SUGIOKA Toshinobu d0575953ec SH: fix clobber list in stdlib/longlong.h
(cherry picked from commit 78fd882a7b)
2009-09-18 17:11:14 +02:00
Jakub Jelinek 01d137496b Fix obstack* on i?86
obstack calls several callbacks, so on i?86 it'd better be compiled
without -mpreferred-stack-boundary=2, otherwise the callbacks are called
with misaligned stack.
(cherry picked from commit 1877ea16ca)
2009-09-18 16:51:52 +02:00
Ulrich Drepper b1cc14cb09 Stop backtrace when we make no more progress.
(cherry picked from commit 2dec6007d1)
2009-09-18 16:48:28 +02:00
Ulrich Drepper aa152ec6ad Handle missing NSS modules and those without callbacks.
getaddrinfo didn't update the status variable in that round of the
loop if no callback was used.
(cherry picked from commit 657317537c)
2009-08-17 15:37:34 +02:00
Ulrich Drepper c87c885303 Build pt_chown as PIE.
(cherry picked from commit f051ddfe22)
2009-08-04 10:58:04 +02:00
Ulrich Drepper a780093062 Extend pt_chown to drop privileges.
If libcap is available, use it to drop privileges in pt_chown before
starting the work to change the permissions and ownership of the
slave device.
(cherry picked from commit f793b62438)
2009-08-04 10:57:56 +02:00
H.J. Lu a584fc6a6b Consolidate PIE linking Makefile rules.
(cherry picked from commit 435aa54b3b)
2009-08-04 10:57:34 +02:00
Jakub Jelinek c97164f05b Implement accept4 for more archs using socketcall.
So far accept4 was only supported on archs using socketcall for x86.
This patch adds support for the remaining archs.
(cherry picked from commit 1e1dc4e82d)
2009-07-29 13:34:51 +02:00
Ulrich Drepper 7ee7b70342 Fix whitespace in last patch.
(cherry picked from commit 241e680320)
2009-07-29 13:14:38 +02:00
Ulrich Drepper 23d488f45e pthread_mutex_unlock needs to use _rel semantics for atomic ops.
(cherry picked from commit e73e694e38)
2009-07-29 11:19:39 +02:00
Ulrich Drepper 07e2253d98 Compatibility of signalfd/eventfd with older kernels.
(cherry picked from commit aa7492d20e)
2009-07-29 11:19:39 +02:00
Ulrich Drepper b1cd3047ad Handle SERVFAIL, NOTIMP, REFUSED replies from DNS server better.
When doing IPv4+6 lookups we have to pass up the error record from
send_dg.
(cherry picked from commit e28b969b49)
2009-07-29 11:19:39 +02:00
Jim Meyering 87b8eeddb0 remove subsumed .gitignore entries and files
(cherry picked from commit edeabc047e)
2009-07-29 11:18:27 +02:00
Jim Meyering 0a0ddbbe67 remove mpn-copy.mk from .gitignore files
(cherry picked from commit 8636153326)
2009-07-29 11:18:27 +02:00
Jim Meyering 52d150a187 remove COPYING* from .gitignore files
(cherry picked from commit bb87237534)
2009-07-29 11:18:27 +02:00
Andreas Schwab c432414bf8 Remove redundant .gitignore files.
(cherry picked from commit ff6ff38db2)
2009-07-29 11:18:27 +02:00
Ulrich Drepper d328df16a2 Sun agreed to a change of the license for the RPC code to a BSD-like license.
(cherry picked from commit ab09b22159)
2009-07-29 11:11:29 +02:00
Andreas Schwab cba457a16f Use correct release semantic in list update.
nscd uses lockfree lists and we need to ensure the correct release
semantics is used when adding to the list.
(cherry picked from commit 50158f9552)
2009-07-16 20:41:54 +02:00
Ulrich Drepper 475cfe06fa Fix race in corruption check.
With atomic fastbins the checks performed can race with concurrent
modifications of the arena.  If we detect a problem re-do the test
after getting the lock.
(cherry picked from commit bec466d922)
2009-07-16 20:36:06 +02:00
Jakub Jelinek e875bad50a Use rel semantics of cas instead of acq semantics with full barrier before it in _int_free
The following patch fixes catomic_compare_and_exchange_*_rel definitions
(which were never used and weren't correct) and uses
catomic_compare_and_exchange_val_rel in _int_free.  Comparing to the
pre-2009-07-02 --enable-experimental-malloc state the generated code should
be identical on all arches other than ppc/ppc64 and on ppc/ppc64 should use
lwsync instead of isync barrier.

(cherry picked from commit bea0ac1d87)
2009-07-16 20:35:37 +02:00
Ulrich Drepper a5cceee5d5 Fix build issue with modules for audit test on machines != x86-64.
(cherry picked from commit 59cbcac015,
removed tst-audit4, tst-audit5 references)
2009-07-16 18:03:33 +02:00
Ulrich Drepper 5c2c150929 Fix comment in Linux's <sys/epoll.h>.
(cherry picked from commit 339717d5f1)
2009-07-16 17:53:44 +02:00
Andreas Schwab ee38f2391d Fix wrong PPC_FEATURE_* values.
Nothing uses these wrong values yet, but it fixes a warning due to
conflicting definitions in <asm/cputable.h>.

(cherry picked from commit 2123d5815e)
2009-07-16 17:48:28 +02:00
H.J. Lu b2e2a03ffd Fix handling of xmm6 in ld.so audit hooks on x86-64.
(cherry picked from commit 167d5ed5de)
2009-07-16 17:46:54 +02:00
Ulrich Drepper 51da0dcf51 Fix possible race when freeing object in fast bin list.
(cherry picked from commit 6cbbaa50aa)
2009-07-16 17:44:48 +02:00
Ulrich Drepper 870a58b0b6 Fix NIS and NIS+ getnetbyaddr backends.
The addresses were interpreted as class-based network addresses.
(cherry picked from commit 2fd0cd8b52)
2009-07-16 17:42:57 +02:00
Ulrich Drepper 7705c6c561 Fix getent networks lookup and resulting incorrect NSS change.
I changed the files NSS backend for networks because I thought the
getent use of getnetbyaddr is correct.  But it isn't.  Undo parts
of the last change and fix getent.
(cherry picked from commit 5cd1f906c3)
2009-07-16 17:42:52 +02:00
Ulrich Drepper ef626d54ac Fix getnetbyaddr implementation.
There were two problems in the getnetbyaddr implementation.  The type
argument is pretty much useless since (almost) no input file contains
this information and the NSS backends make up the value they fill in
for the n_addrtype field.  Therefore we now declare that passing AF_UNSPEC
is always recognized.  Secondly, the files backend didn't compare the network
numbers with the correct endianess.

Also change getent to take advantage of the type parameter change.

(cherry picked from commit 29ba9812bb)
2009-07-16 17:40:28 +02:00
Andreas Schwab cb8ad6d56a Fix cfa offset for saved registers in PPC sqrt implementations.
(cherry picked from commit 3f241d7584)
2009-07-16 17:38:30 +02:00
Andreas Schwab 3f860e1ac8 Handle empty TZ strings at the end of new-style timzeone files correctly.
(cherry picked from commit 7a7c2c2465)
2009-07-16 17:38:00 +02:00
Ulrich Drepper 9210e448bf Add 802.15.4 definitions to header files.
(cherry picked from commit d0a2af7106)
2009-07-16 17:31:14 +02:00
Jakub Jelinek d0f6ed789f Fix x86-64 memchr for large lengths.
(cherry picked from commit fab8238de6)
2009-06-18 00:27:59 +02:00
Ryan S. Arnold 626b157664 Fix incorrect use of cmpldi in 32-bit PPC code.
The 32-bit PowerPC POWER6 memcpy uses the cmpldi insn when it should use a cmplwi.
BZ #10107
(cherry picked from commit 25bfbb9e0e)
2009-06-18 00:26:14 +02:00
Ulrich Drepper 1f3ae5ae37 Define week, first_weekday, first_workday in de_AT locale.
BZ #10011
(cherry picked from commit b23964c620)
2009-06-18 00:24:53 +02:00
Ulrich Drepper c9dab1b7ac Run tst-fgetwc with necessary envvar.
(cherry picked from commit eae3208e24)
2009-06-18 00:24:04 +02:00
Ulrich Drepper c8bfc69629 Fix permission of slave device on devpts if necessary.
If devptr is misconfigured the slave device permission after grantpt
might not be 0620.  BZ #10166
(cherry picked from commit 292e3abebf)
2009-06-16 12:24:54 +02:00
Ulrich Drepper 2a31410e40 When iterating over CPU bitmask, don't try more than CPU_SETSIZE.
(cherry picked from commit 395a37e379)
2009-06-16 12:23:11 +02:00
Arnaud Ebalard 3ff6565150 Fix type of nd_opt_home_agent_info_preference.
(cherry picked from commit 7ed520bd85)
2009-06-16 12:22:37 +02:00
Joe Landers 26330c1c48 Fix memory leak when batch-reading large NIS password maps.
Not the whole was traversed in the function to free all buffers.
BZ #10203
(cherry picked from commit 233a182b9e)
2009-06-16 12:21:55 +02:00
Bruce Dubbs 4da50f4b07 (do_test): Use de_DE.UTF-8 as locale name.
(cherry picked from commit 4155d92633)
2009-06-16 12:21:28 +02:00
Ulrich Drepper e80cfa6941 Fix computation of tzspec_len.
Without this it should never have worked that we can use the
embedded envvar in the timezone data files for dates after the last
matching rule.
(cherry picked from commit 6355c99740)
2009-06-16 00:11:55 +02:00
Akinori Hattori 0f1ea04f8a Handle leap seconds even if no DST rule exists.
This fixes BZ #10211.
(cherry picked from commit 29143408ae)
2009-06-16 00:11:52 +02:00
Bryan Kadzban 9cf557216c Fix futex syscall parameter for x86 absolute timeout waits.
This affects only installations compiled for kernels older than 2.6.18.
(cherry picked from commit 1828530f09)
2009-06-12 11:49:45 +02:00
Ulrich Drepper 53f32b044f Remember we switched to single-request mode.
This change prevents repetition in most later calls of the resolver
in case the DNS server or the network connection is broken.
(cherry picked from commit 310647e980)
2009-06-12 11:41:55 +02:00
J.H.M. Dassen ac37d9836e Remove comma at end of enum.
(cherry picked from commit 88ea382fda)
2009-06-12 11:41:20 +02:00
Ulrich Drepper e40d82c4ee (_IO_new_file_fopen): Don't prematurely stop parsing mode string.
(cherry picked from commits 0d74e04361,
d360a0da2b)
2009-06-09 17:57:33 +02:00
Ulrich Drepper e926cb1774 Terminate correct buffer.
Little typo could cause additional characters to be printed.
(cherry picked from commit fbb04b35e7)
2009-06-06 04:48:30 +02:00
André Goddard Rosa 1e639628d1 Fix mbrtowc example.
The remaining bytes were not copied correctly.
(cherry picked from commit 21e66bc528)
2009-06-05 23:09:06 +02:00
Ulrich Drepper a447f6830f Add missing file from accept4 commit.
Hidden by previous .gitignore content.
(cherry picked from commit fd469aac31)
2009-06-05 23:08:14 +02:00
Andreas Schwab 10bf3b7655 Move AC_CANONICAL_HOST before first use of $host and $build.
(cherry picked from commit c16a054d5e)
2009-06-05 23:05:50 +02:00
Roland McGrath 8eccea8011 Remove arch directory names from .gitignore.
(cherry picked from commit cc3ae2461c)
2009-06-05 23:05:36 +02:00
Ulrich Drepper 6e1f9be792 Fix errno for boundary conditions in 128-bit long double.
Similar to the changes which went already in for the other formats,
follow POSIX rules for errno.
(cherry picked from commit 7f3394bdf3)
2009-06-05 23:04:22 +02:00
Aurelien Jarno ffbb82ecfe [BZ #10200]
* db-symbols.awk: Use the last field for the symbol name instead
of the 8th one.
(cherry picked from commit 8ee84bd01f)
2009-06-05 23:02:16 +02:00
Ulrich Drepper e38af591a8 Describe nss_dns parallel lookup workaround in 2.10 NEWS.
(cherry picked from commit 57be3fd79a)
2009-05-22 19:15:31 +02:00
Andreas Schwab 297676350b Fix errno for IBM long double.
After the last addition to the math test suite PPC routines haven't
been adjusted so far.
(cherry picked from commit 38ae768d88)
2009-05-22 19:15:05 +02:00
Ulrich Drepper 5d45e59ea6 Fix IA-64 memchr read-ahead.
The latest stratcliff extension exposed a bug in the IA-64 memchr which
uses non-speculative loads to prefetch data.  Change the code to use
speculative loads with appropriate fixup.  Fixes BZ 10162.
(cherry picked from commit fa64b7f76b)
2009-05-22 19:06:26 +02:00
Ulrich Drepper 127bcb269a Don't define __ASSUME_ACCEPT4 for IA-64.
(cherry picked from commit 3533b1a6a6)
2009-05-22 05:04:25 +02:00
Jakub Jelinek a1223d6604 Remove __NR_accept4 definition.
This definition was meant to be removed before the checkin.  It was
used in the development.
(cherry picked from commit d14eda9310)
2009-05-22 05:04:09 +02:00
Jakub Jelinek 917dc587df Correct socketcall argument for accept4.
The header had the old name (paccept).
(cherry picked from commit a2292378d0)
2009-05-22 05:02:28 +02:00
Jakub Jelinek cd816bef95 Fix forced loop termination in nscd database lookup.
There are two issues with the forced loop exit in the nscd lookup:
1. the estimate of the entry size isn't pessimistic enough for all
   databases, resulting potentially is too early exits
2. the combination of 64-bit process and 32-bit nscd would lead to
   rejecting valid records in the database.
(cherry picked from commit 5078fff6c4)
2009-05-22 05:01:25 +02:00
Ulrich Drepper 94c11628f5 Unify __WAIT_INT definition in stdlib.h and sys/wait.h.
This fixes BZ #10159.  The stdlib.h definition was out of date.
(cherry picked from commit a64039b084)
2009-05-22 05:00:05 +02:00
Ulrich Drepper e856702a04 Move BLOCK_ALIGN* macros back.
The move to nscd-client.h was only needed for some interim version
of the patch.  The final version doesn't need it.  Undo the change.
(cherry picked from commit fa546abe9d)
2009-05-22 04:58:49 +02:00
Ulrich Drepper 223e614daf Fix exit condition.
The patch to bound the search in the nscd caches used a wrong exit
condition.  Fixed now.
(cherry picked from commit 95410b7ba2)
2009-05-22 04:58:24 +02:00
Ulrich Drepper 4c7cb20430 Further robustify nscd database lookup.
We can compute an absolute maximum for the number of elements which
can fit into the currently mapped database.  Stop after that many
iterations.
(cherry picked from commit 831a40494d)
2009-05-22 04:56:54 +02:00
Jakub Jelinek b9e0df9847 Robustify libc-side nscd database reader.
The nscd database mapped in processes can change at any time.  We
have to be more vigilant when it comes to using that memory.  Test
the data entries are valid in their entire size, don't read data
again from memory once we verified it, and make sure the trailing
pointer is not going off the deep end.
(cherry picked from commit cfe1fc1013)
2009-05-22 04:54:50 +02:00
Jakub Jelinek f27dc66bb9 Avoid double definition of catomic_compare_and_exchange_val_acq.
(cherry picked from commit 3b1b533bc3)
2009-05-22 04:49:54 +02:00
Jakub Jelinek 6dca80c9c7 Don't try to cleanup libselinux and libaudit.
Because we are not shutting down the other threads first another
thread might work on a query before the process shuts down.  In this
case the now uninitialized libselinux and libaudit might be used.
Just don't free the resources.  It's not necessary anyway because
the process is about to terminate.
(cherry picked from commit 9e471dad8e)
(fixed ChangeLog entry by pasky)
2009-05-22 04:49:43 +02:00
Ulrich Drepper 6b23316e66 Fix change to prevent cancel signal in unsafe places.
The bits tested to decide when to delay the return when switching
off async cancel mode were wrong.  Fix that.  Also close a race
condition in pthread_cancel where the bit indicating the cancellation
is unconditionally set even if the cancel type might have changed.
(cherry picked from commit 9437b427ce)
2009-05-22 04:45:12 +02:00
Ulrich Drepper f84a1e4190 No cancel signal in unsafe places.
When disabling async cancellation we cannot return from the function
call if the thread is canceled.  This happens when the cancel bits
have been set before async cancel is disabled but the signal hasn't
been sent/received yet.  Delay for as long as necessary since
otherwise the signal might be received in an unsafe context.
(cherry picked from commit 1a7f254b4b)
2009-05-22 04:45:00 +02:00
Ulrich Drepper 8573480189 Cleanup some .gitignore files.
(cherry picked from commit 9a1fbe861d)
2009-05-22 04:35:16 +02:00
Ulrich Drepper b0a411e5dd Ignore Emacs backup files.
(cherry picked from commit f1342e0be8)
2009-05-22 04:35:11 +02:00
Jim Meyering 5ccf88c235 rename each .cvsignore file to .gitignore
(cherry picked from commit 2e180a2622)
2009-05-22 04:26:25 +02:00
Ulrich Drepper 9478a09b67 Update from trunk. 2009-05-11 14:08:53 +00:00
Ulrich Drepper 14795b319a Update from trunk. 2009-05-10 19:31:51 +00:00
263 changed files with 4815 additions and 4046 deletions
-29
View File
@@ -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
+46
View File
@@ -0,0 +1,46 @@
*~
*.d
*.o
*.so
*.po
*.go
*.bo
stamp.*
*.stamp
*.ustamp
*.udeps
*.gz
*.Z
*.tar
*.tgz
*.bz2
=*
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
+523
View File
@@ -1,3 +1,526 @@
2009-11-01 Ulrich Drepper <drepper@redhat.com>
* malloc/hooks.c (free_check): Restore locking and call _int_free
appropriately.
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-11-03 Andreas Schwab <schwab@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Add
readahead.
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-09-05 H.J. Lu <hongjiu.lu@intel.com>
* configure.in: Support binutils 2.100 and 3.0.
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-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-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-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-25 Joseph Myers <joseph@codesourcery.com>
* math/s_fdiml.c (__fdiml): Use fpclassify instead of fpclassifyl.
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.
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.
2009-08-10 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
* stdlib/longlong.h [__sh__] (udiv_qrnnd, sub_ddmmss): Add "t" to
clobber list.
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/ia64/backtrace.c (backtrace_helper): Stop backtrace when
we make no more progress.
2009-07-25 Ulrich Drepper <drepper@redhat.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.
2009-06-16 Ulrich Drepper <drepper@redhat.com>
* login/Makefile: Build pt_chown as PIE.
2009-06-16 Ulrich Drepper <drepper@redhat.com>
* login/Makefile: If necessary link pt_chown with -lcap.
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-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-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.
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>.
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-07 H.J. Lu <hongjiu.lu@intel.com>
* elf/Makefile: Don't build modules for tst-audit3 for anything
but x86-64 targets.
2009-07-10 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/sys/epoll.h: Fix comment.
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-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.
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-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-18 Ulrich Drepper <drepper@redhat.com>
* 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-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-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-15 Ulrich Drepper <drepper@redhat.com>
[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 #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>.
* 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>.
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-03 Ulrich Drepper <drepper@redhat.com>
* elf/dl-sysdep.c (_dl_show_auxv): Terminate correct string.
2009-05-30 Andreas Schwab <schwab@linux-m68k.org>
* configure.in: Move AC_CANONICAL_HOST before first use of $host
and $build.
* configure: Regenerated.
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.
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.
2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
[BZ #10162]
* sysdeps/ia64/memchr.S: Use speculative load.
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.
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>
[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.
* 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-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.
+16
View File
@@ -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 $@ \
@@ -538,6 +551,9 @@ ifeq ($(elf),yes)
+postinit = $(addprefix $(csu-objpfx),crtn.o)
+prector = `$(CC) --print-file-name=crtbegin.o`
+postctor = `$(CC) --print-file-name=crtend.o`
# Variants of the two previous definitions for linking PIE programs.
+prectorS = `$(CC) --print-file-name=crtbeginS.o`
+postctorS = `$(CC) --print-file-name=crtendS.o`
+interp = $(addprefix $(elf-objpfx),interp.os)
endif
csu-objpfx = $(common-objpfx)csu/
+23 -36
View File
@@ -347,51 +347,38 @@ TAGS:
| $(ETAGS) -o $@ -
# Make the distribution tarfile.
.PHONY: dist tag-for-dist
.PHONY: dist dist-prepare
generated := $(generated) stubs.h
files-for-dist := README FAQ INSTALL NOTES configure
files-for-dist := README FAQ INSTALL NOTES configure ChangeLog NEWS
tag-of-stem = glibc-$(subst .,_,$*)
dist-selector = -r $(tag-of-stem)
# 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 }'
# 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
%.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 $@
+2 -1
View File
@@ -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.
+7
View File
@@ -47,6 +47,13 @@ Version 2.10
* 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
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
Vendored
+94 -94
View File
@@ -726,14 +726,6 @@ base_machine
add_on_subdirs
add_ons
subdirs
host_os
host_vendor
host_cpu
host
build_os
build_vendor
build_cpu
build
libc_cv_nss_crypt
experimental_malloc
multi_arch
@@ -756,6 +748,14 @@ CPPFLAGS
LDFLAGS
CFLAGS
CC
host_os
host_vendor
host_cpu
host
build_os
build_vendor
build_cpu
build
target_alias
host_alias
build_alias
@@ -2011,6 +2011,90 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
{ { $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; }; }
{ $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
$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 &&
{ { $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` ||
{ { $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
{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
$as_echo "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) { { $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
ac_save_IFS=$IFS; IFS='-'
set x $ac_cv_build
shift
build_cpu=$1
build_vendor=$2
shift; shift
# Remember, the first character of IFS is used to create $*,
# except with old shells:
build_os=$*
IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
{ $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
$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` ||
{ { $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
{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
$as_echo "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) { { $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
ac_save_IFS=$IFS; IFS='-'
set x $ac_cv_host
shift
host_cpu=$1
host_vendor=$2
shift; shift
# Remember, the first character of IFS is used to create $*,
# except with old shells:
host_os=$*
IFS=$ac_save_IFS
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3844,90 +3928,6 @@ else
fi
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
{ { $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; }; }
{ $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
$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 &&
{ { $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` ||
{ { $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
{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
$as_echo "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) { { $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
ac_save_IFS=$IFS; IFS='-'
set x $ac_cv_build
shift
build_cpu=$1
build_vendor=$2
shift; shift
# Remember, the first character of IFS is used to create $*,
# except with old shells:
build_os=$*
IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
{ $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
$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` ||
{ { $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
{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
$as_echo "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) { { $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
ac_save_IFS=$IFS; IFS='-'
set x $ac_cv_host
shift
host_cpu=$1
host_vendor=$2
shift; shift
# Remember, the first character of IFS is used to create $*,
# except with old shells:
host_os=$*
IFS=$ac_save_IFS
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
@@ -4839,7 +4839,7 @@ $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]*|[3-9].*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
@@ -4902,7 +4902,7 @@ $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]*|3-9.*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+4 -4
View File
@@ -6,6 +6,8 @@ AC_CONFIG_SRCDIR([include/features.h])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([scripts])
AC_CANONICAL_HOST
AC_PROG_CC
if test $host != $build; then
AC_CHECK_PROGS(BUILD_CC, gcc cc)
@@ -316,8 +318,6 @@ else
fi
AC_SUBST(libc_cv_nss_crypt)
AC_CANONICAL_HOST
# 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
@@ -897,10 +897,10 @@ 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]*|[3-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]*]|[3-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
-7
View File
@@ -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
+1
View File
@@ -0,0 +1 @@
specs
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+2 -3
View File
@@ -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
};
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+13 -9
View File
@@ -89,7 +89,8 @@ 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-auditmod1.c tst-auditmod3a.c tst-auditmod3b.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 \
@@ -176,6 +177,9 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
# reldep9
test-srcs = tst-pathopt
tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog
ifeq (x86_64,$(config-machine))
tests += tst-audit3
endif
endif
ifeq (yesyes,$(have-fpie)$(build-shared))
tests: $(objpfx)tst-pie1.out
@@ -224,6 +228,9 @@ endif
ifeq (yesyes,$(have-fpie)$(build-shared))
modules-names += tst-piemod1
endif
ifeq (x86_64,$(config-machine))
modules-names += tst-auditmod3a tst-auditmod3b
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.
@@ -826,14 +833,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
@@ -914,6 +914,10 @@ 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-global1: $(libdl)
$(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so
+1 -1
View File
@@ -335,7 +335,7 @@ _dl_show_auxv (void)
/* 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,
+20
View File
@@ -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;
}
+24
View File
@@ -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;
}
+156
View File
@@ -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;
}
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+1 -1
View File
@@ -7,7 +7,7 @@ libc {
fgetsgent; fgetsgent_r;
# g*
getsgent; getsgent_r; getsgnam; getsgnam_r; getsgent_r; getsgnam_r;
getsgent; getsgent_r; getsgnam; getsgnam_r;
# p*
putsgent;
+1
View File
@@ -26,5 +26,6 @@
#define ENDFUNC_NAME endsgent
#define DATABASE_NAME gshadow
#define BUFLEN 1024
#define NO_COMPAT_NEEDED 1
#include "../nss/getXXent_r.c"
+1
View File
@@ -26,5 +26,6 @@
#define ADD_PARAMS const char *name
#define ADD_VARIABLES name
#define BUFLEN 1024
#define NO_COMPAT_NEEDED 1
#include "../nss/getXXbyYY_r.c"
+3 -5
View File
@@ -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;
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+32 -21
View File
@@ -95,14 +95,26 @@
#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 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
@@ -112,12 +124,6 @@
#endif
#ifndef catomic_compare_and_exchange_val_rel
# define catomic_compare_and_exchange_val_rel(mem, newval, oldval) \
atomic_compare_and_exchange_val_acq (mem, newval, oldval)
#endif
/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
Return zero if *MEM was changed or non-zero if no exchange happened. */
#ifndef atomic_compare_and_exchange_bool_acq
@@ -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
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+2 -2
View File
@@ -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;
};
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
-8
View File
@@ -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
+2 -1
View File
@@ -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-fgetwc
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
+75
View File
@@ -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;
}
+3 -3
View File
@@ -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. */
+1 -1
View File
@@ -6,7 +6,7 @@
static int
do_test (void)
{
if (setlocale (LC_ALL, "de_DE.utf8") == NULL)
if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
{
puts ("setlocale failed");
return 1;
+24 -77
View File
@@ -631,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;
@@ -678,88 +682,28 @@ _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;
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;
@@ -792,6 +736,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;
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+31 -28
View File
@@ -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;
+6
View File
@@ -1,3 +1,9 @@
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-05-04 Ulrich Drepper <drepper@redhat.com>
* localedata/locales/bn_BD: Remove comment about missing collation
+3
View File
@@ -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
+19 -1
View File
@@ -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)
+38 -7
View File
@@ -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. */
@@ -135,16 +139,43 @@ 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)
error (FAIL_ENOMEM, errno,
_("Failed to initialize drop of capabilities"));
/* 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))
error (FAIL_EXEC, errno, _("cap_set_proc failed"));
}
#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, "");
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+1
View File
@@ -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 $@
+20 -17
View File
@@ -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 ) )
@@ -276,13 +276,17 @@ free_check(mem, caller) Void_t* mem; const Void_t *caller;
mchunkptr p;
if(!mem) return;
(void)mutex_lock(&main_arena.mutex);
p = mem2chunk_check(mem, NULL);
if(!p) {
(void)mutex_unlock(&main_arena.mutex);
malloc_printerr(check_action, "free(): invalid pointer", mem);
return;
}
#if HAVE_MMAP
if (chunk_is_mmapped(p)) {
(void)mutex_unlock(&main_arena.mutex);
munmap_chunk(p);
return;
}
@@ -291,12 +295,11 @@ free_check(mem, caller) Void_t* mem; const Void_t *caller;
memset(mem, 0, chunksize(p) - (SIZE_SZ+1));
#endif
#ifdef ATOMIC_FASTBINS
_int_free(&main_arena, p, 0);
_int_free(&main_arena, p, 1);
#else
(void)mutex_lock(&main_arena.mutex);
_int_free(&main_arena, p);
(void)mutex_unlock(&main_arena.mutex);
#endif
(void)mutex_unlock(&main_arena.mutex);
}
static Void_t*
@@ -345,13 +348,13 @@ 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 {
@@ -367,7 +370,7 @@ realloc_check(oldmem, bytes, caller)
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));
@@ -626,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;
@@ -667,7 +670,7 @@ 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 = NULL;
+468 -425
View File
File diff suppressed because it is too large Load Diff
-14
View File
@@ -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
+29
View File
@@ -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
+1 -1
View File
@@ -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;
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+10 -2
View File
@@ -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
+10 -2
View File
@@ -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)
+10 -2
View File
@@ -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)
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+2 -2
View File
@@ -80,10 +80,10 @@ extern ssize_t pwritev (int __fd, __const struct iovec *__iovec, int __count,
# else
# ifdef __REDIRECT
extern ssize_t __REDIRECT (preadv, (int __fd, __const struct iovec *__iovec,
int __count, __off_t __offset),
int __count, __off64_t __offset),
preadv64) __wur;
extern ssize_t __REDIRECT (pwritev, (int __fd, __const struct iovec *__iovec,
int __count, __off_t __offset),
int __count, __off64_t __offset),
pwritev64) __wur;
# else
# define preadv preadv64
+1 -1
View File
@@ -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);
+2 -2
View File
@@ -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)
{
+1 -1
View File
@@ -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);
+54
View File
@@ -1,3 +1,57 @@
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-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-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-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-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
+13 -5
View File
@@ -70,15 +70,13 @@ __pthread_disable_asynccancel (int oldtype)
return;
struct pthread *self = THREAD_SELF;
int newval;
#ifdef THREAD_ATOMIC_AND
THREAD_ATOMIC_AND (self, cancelhandling, ~CANCELTYPE_BITMASK);
#else
int oldval = THREAD_GETMEM (self, cancelhandling);
while (1)
{
int newval = oldval & ~CANCELTYPE_BITMASK;
newval = oldval & ~CANCELTYPE_BITMASK;
if (newval == oldval)
break;
@@ -91,5 +89,15 @@ __pthread_disable_asynccancel (int oldtype)
/* Prepare the next round. */
oldval = curval;
}
#endif
/* 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);
}
}
+13 -5
View File
@@ -86,15 +86,13 @@ __libc_disable_asynccancel (int oldtype)
return;
struct pthread *self = THREAD_SELF;
int newval;
#ifdef THREAD_ATOMIC_AND
THREAD_ATOMIC_AND (self, cancelhandling, ~CANCELTYPE_BITMASK);
#else
int oldval = THREAD_GETMEM (self, cancelhandling);
while (1)
{
int newval = oldval & ~CANCELTYPE_BITMASK;
newval = oldval & ~CANCELTYPE_BITMASK;
if (newval == oldval)
break;
@@ -107,7 +105,17 @@ __libc_disable_asynccancel (int oldtype)
/* Prepare the next round. */
oldval = curval;
}
#endif
/* 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);
}
}
+6 -2
View File
@@ -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. */
+3 -3
View File
@@ -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.
@@ -213,7 +213,7 @@ __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int 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)))
{
@@ -263,7 +263,7 @@ __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int 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)
+1 -1
View File
@@ -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))
@@ -60,7 +60,7 @@
# define LOAD_FUTEX_WAIT_ABS(reg) \
xorl $FUTEX_PRIVATE_FLAG, reg ; \
andl %gs:PRIVATE_FUTEX, reg ; \
orl $FUTEX_WAIT | FUTEX_CLOCK_REALTIME, reg
orl $FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, reg
# define LOAD_FUTEX_WAKE(reg) \
xorl $FUTEX_PRIVATE_FLAG, reg ; \
andl %gs:PRIVATE_FUTEX, reg ; \
@@ -52,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 ; \
@@ -61,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 ; \
@@ -71,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 ; \
@@ -81,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 ; \
@@ -93,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 ; \
@@ -107,7 +107,7 @@
# define LOAD_FUTEX_WAIT_ABS(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 ; \
@@ -123,7 +123,7 @@
# 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 ; \
@@ -253,7 +253,7 @@ __lll_timedlock_wait:
mov #2, r6
cmp/eq r6, r2
bf/s 2f
mov r2, r6
mov r6, r2
1:
mov #2, r6
@@ -327,7 +327,7 @@ __lll_timedlock_wait:
tst r3, r3
bt 6f
1:
/* Get current time. */
mov r15, r4
+2 -1
View File
@@ -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
@@ -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
@@ -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
@@ -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
+13
View File
@@ -1,3 +1,16 @@
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):
+1 -1
View File
@@ -14,7 +14,7 @@ NF == 0 { in_symtab=0; next }
!in_symtab { next }
NF >= 8 && $7 != "UND" { seen[$8] = 1 }
NF >= 8 && $7 != "UND" { seen[$NF] = 1 }
END {
status = 0;
+7 -7
View File
@@ -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
+2 -9
View File
@@ -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.
+1 -1
View File
@@ -179,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));
+4 -3
View File
@@ -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. */
-4
View File
@@ -488,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);
}
+3 -2
View File
@@ -1,4 +1,5 @@
/* Copyright (C) 2004, 2005, 2006, 2007, 2008 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.
@@ -75,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);
+3 -2
View File
@@ -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);
+4 -2
View File
@@ -1,4 +1,5 @@
/* Copyright (C) 1998-2005, 2006, 2007, 2008 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.
@@ -137,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);
+3 -2
View File
@@ -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);
+3 -2
View File
@@ -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)
{
+32 -10
View File
@@ -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>
@@ -467,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
@@ -498,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))
@@ -513,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)
{
@@ -532,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;
}
+3 -2
View File
@@ -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);
+1 -12
View File
@@ -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 */
+1 -4
View File
@@ -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
+4 -2
View File
@@ -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)
+12 -8
View File
@@ -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)
+1 -1
View File
@@ -469,7 +469,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]);
+3 -2
View File
@@ -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)
View File
-6
View File
@@ -1,6 +0,0 @@
*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo
+1
View File
@@ -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 \
tst-nice tst-nanosleep tst-regex2 \
transbug tst-rxspencer tst-pcre tst-boost \
bug-ga1 tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \
+22
View File
@@ -0,0 +1,22 @@
#include <regex.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"
+1
View File
@@ -484,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 },
+1 -1
View File
@@ -2481,7 +2481,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;

Some files were not shown because too many files have changed in this diff Show More