freenode/#clasp - IRC Chatlog
Search
14:54:51
drmeister
Yesterday I build llvm-TOT and libcxx, libcxxabi and libunwind and compiled and linked everything (I think) correctly on an AWS Ubuntu 18 machine. I saw no effect on timing.
14:55:15
drmeister
I'm building it again now on my home machine where I can use "perf top" and a couple of other things to monitor what is going on.
14:57:42
Bike
so with the personality function stuff, i defined a new exception class, but because of how we use typeid in the compiler i guess i need an actual mangled name to look up? how do i get at that?
14:57:42
Colleen
Bike: drmeister said 9 hours, 26 minutes ago: I tried compiling gcc and building ctak with it - it doesn't appear to change things at all. Print statements in Unwind_Find_FDE had no effect (sigh).
14:57:42
Colleen
Bike: drmeister said 9 hours, 9 minutes ago: Then I build llvm with libcxx/libcxxabi/libunwind - I linked with that - again - no improvement. Very frustrating. I posted a question to the libcxx mailing list. I think we really need to get rid of c-w-v-b.
15:03:29
Bike
alternately i could reuse the existing Unwind class, but it has aspects i don't understand, like "virtual void keyFunctionForVtable() ATTR_WEAK;"
15:04:00
Bike
presumably this is a fake function to ensure Unwind has a vtable, but why does it need one?
17:38:45
Bike
exceptions.h relies on something else being included before it that defines FORWARD and stuff, or it doesn't work
17:48:08
Bike
but i can't just include coretypes.h to define FORWARD, because coretypes.h is itself broken because it doesn't know what gctools is
17:54:06
Bike
coretypes.h indirectly includes pointer_tagging.h now, and that includes globals.h, and globals.h refers to Symbol_O, and symbol.h probably also needs coretypes
18:39:58
Bike
i don't even know how to deal with this. do i have to include a bunch of other random things first? this file doesn't need anything scraped
19:24:41
drmeister
echristo: He's helped me immensely in the past getting Clasp's exception handling stuff to work.
20:46:15
Bike
drmeister: a few hours ago I asked about the mangled typeid info names and how to get them. any idea?
20:53:59
drmeister
Yeah - use 'nm <lib>' and dig out the typeid info name from the object file that contains it.
20:54:56
Bike
since the existing types all have the same pattern in the mgneld names i just guessed, and it says the symbol doesn't exist. do i need to do anything else? is this what the vtable thing i also asked about is for?
20:54:59
drmeister
I've done this before: https://github.com/clasp-developers/clasp/blob/dev-chris/src/lisp/kernel/cmp/cmpintrinsics.lsp#L1008
20:57:11
drmeister
https://github.com/clasp-developers/clasp/blob/dev-chris/src/lisp/kernel/cmp/cmpintrinsics.lsp#L1019-L1022
20:58:53
drmeister
There is a thing where you have to define the first virtual function so that the vtable gets compiled properly.
20:59:27
drmeister
https://github.com/clasp-developers/clasp/blob/dev-chris/src/core/exceptions.cc#L77
21:00:09
drmeister
https://github.com/clasp-developers/clasp/blob/dev-chris/include/clasp/core/exceptions.h#L214
21:01:26
drmeister
The void Unwind::keyFunctionForVtable() {}; forces the vtable symbols to be compiled into the object file - it looks like that's what you are missing.
21:01:59
drmeister
https://github.com/clasp-developers/clasp/blob/dev-chris/include/clasp/core/core.h#L111
21:03:24
drmeister
Look up the weak linkage attribute of llvm - I think it's so that you can have a symbol with multiple definitions and the linker uses just one of them.