Age | Commit message (Collapse) | Author |
|
The bug: this blocks in syslogd is stopped:
#include <syslog.h>
int main() {
int i;
for (i = 0; i < 10000; i++)
syslog(LOG_INFO, "Testing, disregard....................");
return 0;
}
Fix: set O_NONBLOCK on fd to "/dev/log".
Other fixes: do not try to write to fd -1, do not spin forever or EAGAIN,
use constant sockaddr instead of recreating identical one each time,
eliminate one intermediate function (SUGPIPE sig handler),
use smallints where appropriate, add a few comments.
Size:
text data bss dec hex filename
- 1140 16 21 1177 499 libc/misc/syslog/syslog.o
+ 1123 13 2 1138 472 libc/misc/syslog/syslog.o
|
|
like
o UCLIBC_HAS_GNU_ERROR
o UCLIBC_HAS_BSD_ERR
o UCLIBC_HAS_PTY
o UCLIBC_HAS_GETPT (1)
o UCLIBC_SYSCALL_STUBS
o UCLIBC_SYSCALL_STUB_WARNING
o UCLIBC_LINUX_SPECIFIC (2)
o UCLIBC_BSD_SPECIFIC (3)
o UCLIBC_NTP_LEGACY (4)
o UCLIBC_SV4_DEPRECATED (5)
o UCLIBC_HAVE_REALTIME (6)
o UCLIBC_HAVE_ADVANCED_REALTIME (7)
o UCLIBC_HAVE_EPOLL (8)
o UCLIBC_HAVE_XATTR (9)
o UCLIBC_HAVE_PROFILING (10)
(1) make non-standard getpt optional and implement standard posix_openpt
(2) fstatfs(), inotify_*(), ioperm(), iopl(), madvise(), modify_ldt(),
personality()
ppoll(), setresuid()
(3) mincore(), getdomainname(), setdomainname()
(4) ntp_adjtime(), ntp_gettime() aliases
(5) ustat() [use statfs(2) in your code instead]
(6) All marked as "(REALTIME)" in SUSv3
(7) All marked as "(ADVANCED REALTIME)" in SUSv3
(8) epoll_create(), epoll_ctl(), epoll_wait()
(9) all Extended Attributes
(10) helpers for gcc's -finstrument-functions
- Fixes _dl_exit()
- Implements sleep(3) for !UCLIBC_HAVE_REALTIME
- Implements usleep(3) for !UCLIBC_HAVE_REALTIME
- adds #warning about incorrect posix_fadvise{,64}()
- removes unused and unwanted uselib()
Net outcome is that an allnoconfig with HAVE_SHARED is now about 88k instead
of formerly 130k.
|
|
text data bss dec hex filename
1176 16 24 1216 4c0 libc/misc/syslog/syslog.o.orig
1140 16 21 1177 499 libc/misc/syslog/syslog.o
|
|
in string.h and strings.h. This caught unguarded string ops in
libc/inet/ethers.c __ether_line_w() function.
I will wait for fallout reports for a week or so,
then continue converting more libc_hidden_proto's.
|
|
The only code change observed is actually a case
where we were not doing that as needed:
00000000 <__GI_tzset>:
-53 push %ebx
-e8 00 00 00 00 call 6 <__GI_tzset+0x6>
-5b pop %ebx
-81 c3 03 00 00 00 add $0x3,%ebx
- R_386_GOTPC _GLOBAL_OFFSET_TABLE_
6a 00 push $0x0
-e8 fc ff ff ff call 10 <__GI_tzset+0x10>
- R_386_PLT32 time
+e8 fc ff ff ff call 3 <__GI_tzset+0x3>
+ R_386_PC32 __GI_time
3d ff 4e 98 45 cmp $0x45984eff,%eax
0f 9e c0 setle %al
0f b6 c0 movzbl %al,%eax
50 push %eax
-e8 fc ff ff ff call 21 <__GI_tzset+0x21>
+e8 fc ff ff ff call 14 <__GI_tzset+0x14>
R_386_PC32 _time_tzset
58 pop %eax
5a pop %edx
-5b pop %ebx
c3 ret
No mass migration of libc_hidden_proto(foo) planned.
Lets wait for potential fallout first.
|
|
|
|
I noticed, that in libc/misc/syslog/syslog.c when the syslog socket is opened, the close-on-exec flag is not set, as it is in gnu libc.
This enables that behavior.
|
|
things, and avoid potential deadlocks caused when a thread holding a uClibc
internal lock get canceled and terminates without releasing the lock. This
change also provides a single place, bits/uClibc_mutex.h, for thread libraries
to modify to change all instances of internal locking.
|
|
I had clearly run search/replace on that were cluttering things up.
|
|
libc.a/libc.so, the diffs go into libc-static-y/libc-shared-y exclusively, add IMA to libc, don't use any MSRC anymore
|
|
is a useless attempt
|
|
missing headers, other jump relocs removed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libc-a-y for objects that go into static libs, changing their suffix to .os, of they should be PIC
|
|
|
|
archs lack proper crt1. The Makefiles in extra/scripts are intended to be linked into each dir, where it is necessary to build locally.
|
|
objects at once; use :=//$</$^; use CRT_SRC/CRT_OBJ/SCRT_OBJ/CSRC/COBJ/SSRC/SOBJ/MSRC/MOBJ where no more is needed, if only CSRC is present use OBJS directly instead of COBJ; CTOR_TARGETS are created directly in lib; remove unused/unneeded parts. Hope I haven't broken too much.
|
|
but they do no harm for the linuxthreads case. Yes, I tested this.
|
|
Add back in the code which sets the default facility if none specified. This
may cause issues with klogd when it tries to use the libc's syslog(), but
klogd comes with its own syslog() implementation so that's a none issue. For
more info, please see the following:
http://sources.redhat.com/ml/libc-alpha/2000-03/msg00059.html
|
|
|
|
Hello,
under some circumstances the following small example prints lots of
garbage onto the console and into the syslog:
#include <syslog.h>
int main ()
{
openlog("foo", LOG_CONS|LOG_NDELAY|LOG_PID|LOG_PERROR, LOG_DAEMON);
syslog (LOG_WARNING, "mlock: %m");
return 1;
}
The reason is, that sprintf returns with -1 and vsyslog dumps the
complete buffer onto stderr and the syslogd socket. The following
patch would fix the problem:
|
|
This code in uClibc would attempt to set the default facility if
none was specified. Except none being specified is 0, which is
also LOG_KERN, therefore klogd could never get kernel messages
logged as LOG_KERN.
|
|
were including libc-lock.h which had a bunch of weak pragmas. Also,
uClibc supplied a number of no-op weak thread functions even though
many weren't needed. This combined result was that sometimes the
functional versions of thread functions in pthread would not override
the weaks in libc.
While fixing this, I also prepended double-underscore to all necessary
weak thread funcs in uClibc, and removed all unused weaks.
I did a test build, but haven't tested this since these changes are
a backport from my working tree. I did test the changes there and
no longer need to explicitly add -lpthread in the perl build for
perl to pass its thread self tests.
|
|
rm.patch:
* Define $(RM) as rm -f in Rules.mak and test/Rules.mak
(this is the same definition as gmake uses by default).
* Change all occurrences of rm and rm -f into $(RM).
|
|
It turns out that uClibc's syslog.c does not close sockets when
doing retries and when it exits due to errors. This patch fixes
it.
|
|
using SOCK_STREAM if SOCK_DGRAM fails.
-Erik
|
|
we were opening the socket() as SOCK_STREAM instead of
using SOCK_DGRAM like we should have done.
|
|
-Erik
|
|
allow recursive locking,
-Erik
|
|
-Erik
|
|
|
|
support for __FORCE_NOGLIBC per Brian Stafford
<brian.stafford@office-logic.com>
|
|
tree is less messy now (which helps), all libraries are placed into
uClibc/lib when compiling, all libraries now use a consistant mechanism
for being built, all libraries use a consistant naming scheme where the
lib name includes the uClibc version number, which makes ldconfig
happy and willing to work with us.
-Erik
|
|
This required we use _LIBC instead of __LIBC__ to be consistent with glibc.
This had some sideffects in sys/syscalls.h. While fixing things, I made
everything use __set_errno() for (eventual) thread support.
-Erik
|
|
-Erik
|
|
|
|
|
|
|