Age | Commit message (Collapse) | Author |
|
Size changes by this and previous change:
text data bss dec hex filename
1151 13 2 1166 48e libc/misc/syslog/syslog.o
1093 10 2 1105 451 libc/misc/syslog/syslog.o
1047 10 2 1059 423 libc/misc/syslog/syslog.o
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
|
The fix:
logfac == 0 in openlog(xx, logfac) is allowed now.
Corresponding internal openlog() call in vsyslog()
uses explicit LOG_USER in order to set it as a default
facility.
Optimizations:
mylock is not recursive now, since a single intenal call
of openlog is converted to a call to openlog_internal
which assumes that lock is already taken. No recursive
locking is possible now.
LogFacility is reduced to byte.
cache static LogFile in auto variable fd (smaller code).
vsyslog with bogus pri parameter wouldn't lock/unlock
and mess with signals - it will just return at once.
pass NULL as ident string in internal openlog call
- same effect as passing LogTag but smaller code.
comment out "if (LogTag)" checks - it is never NULL.
use the same struct sigaction for setting new sigaction
and for saving old one - saves ~32 bytes of stack.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
|
sed -i -e '/Experimentally off - /d' $(grep -rl "Experimentally off - " *)
sed -i -e '/^\/\*[[:space:]]*libc_hidden_proto(/d' $(grep -rl "libc_hidden_proto" *)
should be a nop
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
|
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
|
Handle O=
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
|
|
|
text data bss dec hex filename
- 1179 13 2 1194 4aa libc/misc/syslog/syslog.o
+ 1165 13 2 1180 49c libc/misc/syslog/syslog.o
- 435 4 0 439 1b7 libc/pwd_grp/lckpwdf.o
+ 393 4 0 397 18d libc/pwd_grp/lckpwdf.o
- 38 0 0 38 26 libc/signal/sigandset.o
+ 32 0 0 32 20 libc/signal/sigandset.o
- 63 0 0 63 3f libc/signal/sigblock.o
+ 56 0 0 56 38 libc/signal/sigblock.o
- 22 0 0 22 16 libc/signal/sigempty.o
+ 20 0 0 20 14 libc/signal/sigempty.o
- 25 0 0 25 19 libc/signal/sigfillset.o
+ 20 0 0 20 14 libc/signal/sigfillset.o
- 34 0 0 34 22 libc/signal/sigisempty.o
+ 16 0 0 16 10 libc/signal/sigisempty.o
- 38 0 0 38 26 libc/signal/sigorset.o
+ 32 0 0 32 20 libc/signal/sigorset.o
- 119 0 0 119 77 libc/signal/sigpause.o
+ 113 0 0 113 71 libc/signal/sigpause.o
- 215 0 0 215 d7 libc/signal/sigset.o
+ 211 0 0 211 d3 libc/signal/sigset.o
- 63 0 0 63 3f libc/signal/sigsetmask.o
+ 56 0 0 56 38 libc/signal/sigsetmask.o
- 194 0 1 195 c3 libc/stdlib/abort.o
+ 183 0 1 184 b8 libc/stdlib/abort.o
- 323 0 0 323 143 libc/unistd/sleep.o
+ 309 0 0 309 135 libc/unistd/sleep.o
|
|
Appears to build fine (several .configs tried)
|
|
|
|
|
|
|
|
SIGPIPE handler was attempting to re-acquire an already taken lock.
While at it, stop checking for sigaction failure which is not possible here.
Sizes:
text data bss dec hex filename
- 1123 13 2 1138 472 libc/misc/syslog/syslog.o
+ 1112 13 2 1127 467 libc/misc/syslog/syslog.o
Run tested.
|
|
|
|
|
|
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).
|