| 00:43:43 | | ...but ibot is "the" bot around or confused.... |
| 00:43:43 | andersee | ibot: ibot is a goon |
| 00:44:02 | BZFlag | andersee: heh. I'm hacking on him a bit. |
| 00:44:04 | | 42 |
| 00:44:04 | andersee | ibot: what is 6 * 9? |
| 00:44:18 | | 42 |
| 00:44:18 | BZFlag | ibot 6 * 9 |
| 00:44:34 | | 60 |
| 00:44:34 | BZFlag | ibot 6 * 10 |
| 00:44:42 | | BZFlag: I forgot 6 * 9 |
| 00:44:42 | BZFlag | ibot forget 6 * 9 |
| 00:44:48 | | 54 |
| 00:44:48 | BZFlag | ibot 6 * 9 |
| 00:44:51 | BZFlag | goon |
| 00:44:59 | | bugger all, i dunno, andersee |
| 00:44:59 | andersee | ibot: what is the ultimate answer to life, the universe, and everything? |
| 00:45:15 | | andersee: bugger all, i dunno |
| 00:45:15 | andersee | ibot: life, the universe, and everything? |
| 00:45:44 | | OK, andersee. |
| 00:45:44 | andersee | ibot: The ultimate answer to life, the universe, and everything is 42. |
| 00:46:39 | | bugger all, i dunno, andersee |
| 00:46:39 | andersee | ibot: what is the ultimate answer to life, the universe, and everything? |
| 01:09:49 | mjn3 | andersee: in case you missed it... linking the two perl thread-support shared libs against libpthread fixes allows all perl thread tests to run successfully! |
| 01:10:29 | andersee | mjn3: yeah, I missed it. |
| 01:10:36 | andersee | mjn3: Good to know! |
| 01:11:05 | mjn3 | i'm going to build a glibc version and see what it does |
| 01:11:18 | andersee | Cool. So looks like we are good to go then for a release. |
| 01:12:30 | andersee | is away: looking for food |
| 01:34:52 | andersee | is back (gone 00:22:21) |
| 01:43:51 | mjn3 | andersee: glibc fails one of the perl int tests.. |
| 01:44:09 | andersee | hehe |
| 01:44:33 | mjn3 | andersee: glibc resolves the thread stuff correctly, even without linking those support libs vs libpthread. |
| 01:45:34 | andersee | mjn3: I suspect strongly if you built with --uclibc-ctors or built w/ a native toolchain it would've worked |
| 01:46:43 | mjn3 | andersee: well, i can try with --uclibc-ctors easily enough |
| 01:47:30 | andersee | libpthread has a function w/ a constructor attribute... w/o ctors that fails to run |
| 02:00:54 | mjn3 | andersee: --uclibc-ctors did _not_ fix things |
| 02:00:58 | andersee | :-( |
| 02:01:46 | mjn3 | btw, did you fix that dyanamic linker or loader problem you added that last test for? |
| 02:02:08 | andersee | Well, I tried to. |
| 02:02:46 | andersee | It doesn't work, since on the link step the wrapper generally doesn't know if PIC of non-PIC code is being linked... |
| 02:02:59 | andersee | s/of/or/ |
| 02:03:20 | andersee | brb... |
| 02:09:05 | mjn3 | andersee: i'm calling it a night... |
| 02:10:42 | andersee | k |
| 02:10:55 | andersee | I'll probably try to push a release out... |
| 02:11:07 | andersee | It may not be perfect, but it should at least be better |
| 02:11:22 | mjn3 | well, we've gotten quite a few bugs stomped |
| 02:11:26 | andersee | yup |
| 02:11:45 | andersee | I'll probably add back in a #define sys_errlist "fix your code" thing... |
| 02:11:46 | mjn3 | with the perl and python tests passing, i feel pretty good about things |
| 02:11:54 | mjn3 | ok |
| 02:11:54 | andersee | But other that that, I think its good to go |
| 02:12:13 | andersee | Catch you tomorrow |
| 02:13:03 | mjn3 | yep. i've got to take the cat to the vet in the morning. then i've got a couple of errands to run in the afternoon. but i plan to get as much work done as possible while toni's watching the US Open |
| 02:13:21 | andersee | k |
| 02:13:45 | andersee | And I'll do my best to keep from distracting you from your work, so you can get the i18n stuff done |
| 02:13:46 | andersee | :) |
| 02:14:35 | mjn3 | ;-) well, i think things are pretty solid at the moment. not expecting too many distractions, other than the zaurus project which seem to be "on" |
| 02:14:53 | mjn3 | but i built that into the time estimate for the i18n work |
| 02:14:58 | mjn3 | catch you tomorrow |
| 02:15:20 | andersee | night |
| 02:15:26 | mjn3 | night |
| 15:29:02 | mjn3 | andersee: i've got a test case for you that implements the perl dynamic linking problem with threads |
| 15:34:45 | andersee | oh? |
| 15:34:47 | andersee | yawns |
| 15:34:54 | andersee | just woke up |
| 15:35:07 | mjn3 | andersee: take a look at dyn.tgz in my homedir on winder |
| 15:35:11 | andersee | the test case works, or doesn't work? |
| 15:35:30 | mjn3 | both... there are 2. ;-) |
| 15:36:32 | andersee | As you may have noticed, I didn't get the release out |
| 15:36:38 | andersee | fell asleep |
| 15:36:40 | mjn3 | hmm... just tried running it on phoenix. got a segfault |
| 15:36:48 | mjn3 | i noticed. |
| 15:38:51 | mjn3 | andersee: here's my output |
| 15:38:54 | mjn3 | Running dlttest |
| 15:38:54 | mjn3 | ./dlttest |
| 15:38:55 | mjn3 | I am the libhowdy constructor! |
| 15:38:55 | mjn3 | howdy: __pthread_return_0 = 0x40022a17 |
| 15:38:55 | mjn3 | howdy: pthread_cond_signal = 0x40022a17 |
| 15:38:55 | mjn3 | I am the libhowdy destructor! |
| 15:38:59 | mjn3 | Running dlttest2 |
| 15:39:01 | mjn3 | ./dlttest2 |
| 15:39:03 | mjn3 | I am the libhowdy constructor! |
| 15:39:05 | mjn3 | main: __pthread_return_0 = 0x804845c |
| 15:39:07 | mjn3 | howdy: __pthread_return_0 = 0x804845c |
| 15:39:09 | mjn3 | howdy: pthread_cond_signal = 0x40022a17 |
| 15:39:11 | mjn3 | I am the libhowdy destructor! |
| 15:39:19 | andersee | /tmp/test/dyn/dlttest.c:34: undefined reference to `__pthread_return_0' |
| 15:39:19 | andersee | collect2: ld returned 1 exit status |
| 15:39:19 | andersee | make: *** [dlttest2] Error 1 |
| 15:40:46 | andersee | hehe |
| 15:40:54 | andersee | rebuilding uClibc w/threads support... |
| 15:43:04 | mjn3 | hmm... just noticed that i didn't link dlttest and dlttest2 with -lpthread. tried again and doesn't make a diff. surprised me that it worked without though. must have been due to the weaks in libc |
| 15:43:30 | andersee | yeah |
| 15:43:50 | andersee | I now get the same output |
| 15:43:54 | mjn3 | now, if you add -lpthread when you build libhowdy.so, you get the correct results as well |
| 15:44:36 | andersee | /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Wall -Os -g --uclibc-ctors -shared -o libhowdy.so -Wl,-soname,libhowdy.so howdy.o -lpthread |
| 15:44:38 | andersee | that? |
| 15:44:42 | mjn3 | yeah |
| 15:44:56 | andersee | Running dlttest |
| 15:44:56 | andersee | ./dlttest |
| 15:44:56 | andersee | ./dlttest: symbol '__pthread_provide_wrappers': can't resolve symbol '”L' |
| 15:45:00 | andersee | etc.etc.etc. |
| 15:45:37 | mjn3 | cc -Wall -Os -g --uclibc-ctors -shared -o libhowdy.so -Wl,-soname,libhowdy.so howdy.o -lpthread |
| 15:45:45 | mjn3 | worked for me... |
| 15:46:00 | mjn3 | with appropriate PATH of course... |
| 15:46:58 | mjn3 | ah.. did you add -lpthread after -ldl when linking dlttest and dlttest2? i forgot to do that before i uploaded |
| 15:47:44 | andersee | /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Wall -Os -g --uclibc-ctors -c dlttest.c -o dlttest.o |
| 15:47:44 | andersee | /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Wall -Os -g --uclibc-ctors -o dlttest dlttest.o -ldl -lpthread |
| 15:47:44 | andersee | /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Wall -Os -g --uclibc-ctors -DFORCE -c dlttest.c -o dlttest2.o |
| 15:47:44 | andersee | /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Wall -Os -g --uclibc-ctors -o dlttest2 dlttest2.o -ldl -lpthread |
| 15:47:44 | andersee | /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Wall -Os -g --uclibc-ctors -fPIC -c howdy.c -o howdy.o |
| 15:47:46 | andersee | /usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Wall -Os -g --uclibc-ctors -shared -o libhowdy.so -Wl,-soname,libhowdy.so howdy.o -lpthread |
| 15:47:53 | andersee | And now it runs |
| 15:48:00 | andersee | Running dlttest |
| 15:48:00 | andersee | ./dlttest |
| 15:48:00 | andersee | I am the libhowdy constructor! |
| 15:48:00 | andersee | howdy: __pthread_return_0 = 0x40031b1b |
| 15:48:03 | andersee | howdy: pthread_cond_signal = 0x4000dadc |
| 15:48:03 | andersee | I am the libhowdy destructor! |
| 15:48:05 | andersee | Running dlttest2 |
| 15:48:07 | andersee | ./dlttest2 |
| 15:48:09 | andersee | I am the libhowdy constructor! |
| 15:48:11 | andersee | main: __pthread_return_0 = 0x8048468 |
| 15:48:13 | andersee | howdy: __pthread_return_0 = 0x8048468 |
| 15:48:15 | andersee | howdy: pthread_cond_signal = 0x4000dadc |
| 15:48:17 | andersee | I am the libhowdy destructor! |
| 15:48:40 | mjn3 | now, remove -lpthread from the the libhowdy.so link.... |
| 15:49:08 | mjn3 | and rerun. perl doesn't link the shared libs for its thread support with -lpthread |
| 15:49:42 | andersee | ok, done. |
| 15:49:49 | andersee | Output looks the same |
| 15:50:21 | mjn3 | for me, in the first test, pthread_cond_signal gets resolved to __pthread_return_0. |
| 15:50:38 | andersee | i.e. |
| 15:50:40 | andersee | howdy: __pthread_return_0 = 0x40031b1b |
| 15:50:40 | andersee | howdy: pthread_cond_signal = 0x40031b1b |
| 15:50:42 | mjn3 | i.e. the weak isn't overridden |
| 15:50:43 | mjn3 | yep |
| 15:50:45 | andersee | same address |
| 15:50:51 | andersee | Hmmm |
| 15:51:14 | mjn3 | is that what you're getting? |
| 15:55:32 | andersee | yup |
| 15:55:42 | andersee | Just don't know that was what I was looking for |
| 15:55:54 | andersee | That is pretty wierd |
| 15:57:25 | mjn3 | maybe pthread_return_0 isn't getting resolved in the first case until it is needed by libhowdy, and since libhowdy is only linked vs libc it resolving all the weaks to their libc equivs? just a guess. but this pretty much illustrates the problem i'm seeing with the perl tests |
| 15:58:43 | andersee | Basically, it looks like weak symbols referenced in shared libs are not being overridden, even when those symbols are referenced by the main app. |
| 15:59:31 | mjn3 | well, at least now you have something simple to look at, rather than multi-meg ltrace output from perl. ;-) |
| 16:00:46 | andersee | thanks! |
| 16:01:22 | andersee | I'll adjust that test to be obvious 'if (addr1 == addr2) printf("yipe")' |
| 16:01:36 | andersee | Then commit it |
| 16:03:56 | mjn3 | good enough. |
| 16:04:15 | mjn3 | btw... i tried it on phoenix and it segfaults... |
| 16:04:45 | andersee | :-o |
| 16:07:26 | andersee | You know, the more I think about it, I think we are going to have a lot of trouble with sys_errlist[]... |
| 16:08:33 | andersee | I just checked, and the tuxscreen buildroot has a number of apps using it. |
| 16:09:00 | andersee | I'm updating them now, but if that is representitive, I think we are going to get lots of howls of pain. :( |
| 16:17:08 | mjn3 | well, i can add it back... :-( |
| 16:19:37 | andersee | bad news. Even gcc3.2 uses it. There is a way to configure it out of libiberty, but it is used elsewhere. The boehm garbage collector for example. |
| 16:20:40 | andersee | sigh |
| 16:21:13 | mjn3 | alright. i'll add it back... of course, because of the large errno on mips, it is over 4k on that arch. on the others it is a little over 0.5k |
| 16:23:23 | andersee | mjn3: I think the large mips values could be ignored... |
| 16:23:35 | andersee | i.e. you only get them from strerror |
| 16:23:54 | andersee | Use them wth sys_errlist and get get random crap from memory |
| 16:25:47 | mjn3 | the problem with that is that nobody tests versus sys_nerr. the assume that if an errno was returned by a syscall, then sys_errlist should have a value for it... |
| 16:26:29 | andersee | I think sparc/mips/alpha users can survive... |
| 16:27:01 | andersee | Make sure that all use of sys_errlist[] causes great lots of link time noise. |
| 16:27:53 | andersee | And for mips, I'm ok with omitting the screwwy high numbers from sys_errlist[]... Its a bad solution to a bad problem, but it works. |
| 16:28:25 | mjn3 | i've had a warning about it's impending removal for several weeks now... no one commented. |
| 16:51:55 | mjn3 | grumbles about people thinking this is uCglibc... |
| 18:01:29 | mjn3 | andersee: alright... i reimplemented sys_errlist. tested it on phoenix as well as on i386. |
| 18:02:01 | mjn3 | mjn3@mars:~/work/embedded/uClibc/libc/string$ size sys_errlist.o |
| 18:02:01 | mjn3 | text data bss dec hex filename |
| 18:02:01 | mjn3 | 0 504 0 504 1f8 sys_errlist.o |
| 18:02:19 | mjn3 | mjn3@phoenix:~$ size sys_errlist.o |
| 18:02:19 | mjn3 | text data bss dec hex filename |
| 18:02:19 | mjn3 | 24 4544 0 4568 11d8 sys_errlist.o |
| 18:02:50 | mjn3 | this stuff is in data because it is compiled with -fPIC |
| 18:04:30 | mjn3 | thinks this is a waste of good memory... :-( |
| 18:07:48 | andersee | yup |
| 18:08:06 | andersee | I think it will probably save us some whining |
| 18:08:56 | mjn3 | thinks of a new use for the spam filter... auto replying for any message mentioning sys_errlist |
| 18:09:26 | andersee | hehe |
| 18:09:50 | mjn3 | andersee: well, i'll commit this and put off worrying about what to do when system error messages become locale-dependent |
| 18:10:18 | andersee | k |
| 18:17:24 | mjn3 | andersee: committed. so, what's left on your todo list? |
| 18:19:26 | andersee | Well, in theory I should try to track down the ldso weak symbols not being resolved for shared libs wierdness.... |
| 18:20:23 | andersee | But I'm not sure I have the time/energy to get that one done today |
| 18:20:46 | andersee | So unless there are any objections, I think I'll ship it as-is... |
| 18:22:29 | mjn3 | might want to mention it in a BUGS file? |
| 18:23:18 | andersee | Oh, I guess I have a few things I still need to commit... |
| 18:23:50 | mjn3 | hmm?? also, didn't sjhill say something yesterday about adding a few things? |
| 18:24:22 | andersee | yeah. He was looking at valloc and a few missing syscalls |
| 18:24:43 | mjn3 | and i wish i knew what the X problem is... since it doesn't seem to be scanf now. |
| 18:26:08 | andersee | just committed a fix I did this morning. Some arches failed to include bits/syscall.h into bits/syscalls.h so the SYS_foo defines were missing |
| 18:26:39 | andersee | And I'll commit your updated test/ldso as well... |
| 18:26:54 | mjn3 | ok |
| 18:37:23 | mjn3 | forgot to commit stdio.h with sys_errlist reenabled. just did |
| 18:38:49 | andersee | Not for __USE_GNU? |
| 18:41:59 | mjn3 | sorry? stdio.h you mean? it matches stdio.h from before the removal. and glibc behavior. note the the '_' prefixed versions (for __USE_GNU) are disabled since they aren't supported |
| 18:42:26 | andersee | Ahh. Ok |
| 18:42:44 | mjn3 | i'm building locale-disabled uClibc to run the python and perl tests with |
| 18:42:49 | andersee | k |
| 18:43:07 | andersee | Unless something shows up, I'm calling it a wrap for 0.9.15 |
| 18:43:34 | mjn3 | sounds good |
| 18:49:30 | andersee | rebuilding on winder and phoenix... |
| 19:13:44 | andersee | Ok. Arm checks out fine. powerpc checks out fine. |
| 19:13:51 | andersee | mips is still compiling..... |
| 19:16:31 | mjn3 | ok. perl and python tests pass when uclibc is built without locale support. everything else is turned on though. remember though that python needs that time patch, and perl needs a patch for YESSTR/NOSTR (unsupported) and to deal with the thread dynamic loading problem |
| 19:17:59 | andersee | mind whipping up patches to link to from the "working apps" page? |
| 19:19:24 | mjn3 | i don't mind, but it will have to wait until this evening. i'm just about to go run some errands... pick up some groceries.. pick up a Zaurus. ;-) |
| 19:20:20 | mjn3 | oh yeah... it is important that TZ be set correctly when running the tests. otherwise, at least python fails one |
| 19:21:47 | andersee | Zaurus. Mmmmm... :) |
| 19:21:59 | andersee | mips seems to check out fine as well |
| 19:23:14 | mjn3 | they said it would be easier if i just picked one up and they reimbersed me |
| 19:30:26 | andersee | Well, since x86, arm, powerpc, and mips all check out... |
| 19:30:31 | andersee | Time to cut the release |
| 21:27:49 | aaronl | andersee: the subject in your response to Overfiend made me laugh out loud |
| 21:29:21 | andersee | aaronl: the "PLEASE BE QUIET" one? |
| 21:29:22 | andersee | ;-) |
| 21:30:10 | aaronl | yes |
| 21:30:24 | andersee | I was sick and tired of that pointless thread |
| 21:30:30 | andersee | Seems to have worked. :) |
| 23:08:49 | andersee | is away: eating pizza |
| 23:38:00 | andersee | is back (gone 00:29:10) |
| 23:39:39 | mjn3 | andersee: i'm testing perl to see if it builds without interventions with my patch |
| 23:41:47 | andersee | k |