libera/#clasp - IRC Chatlog
Search
12:23:58
Colleen
Bike: drmeister said at 2021.06.26 18:52:33: Here's another one... https://github.com/clasp-developers/clasp/issues/1172
12:23:58
Colleen
Bike: drmeister said 18 hours, 52 minutes ago: I think the problem with llvm.dbg.value/addr is that inlined functions are getting the wrong dbg scope information when they are inlined. They are keeping the scope of their original function - not the scope of the function that they are ending up in. I've been updating the issue as I dig deeper... https://github.com/clasp-developers/clasp/issues/1172
12:24:57
Bike
i don't understand how inlining would be related, since these dbg calls are only generated by the argument parser, i.e. not for inlined functions
12:25:23
Bike
and when i said "really deeply broken" i meant how it's based on a variety of dynamic variables defining various parts of the source info
12:38:19
drmeister
I've been moving away from dynamic variables and passing info as function arguments.
12:39:15
drmeister
The problem is that the debug info about function scope has to refer to DISubprogram entries that match the actual functions in the module.
12:40:04
drmeister
Inlined functions keep track of the source location and function scope but it's the function scope from where they were defined - not where they are being inlined.
12:43:46
drmeister
It thinks X is in CAR but it's being inlined in %REEVALUATE-CONSTANT^ALEXANDRIA.0.DEV
12:44:12
Bike
although i guess i might have screwed something up in the dbg generation i already did
12:54:45
Bike
that's probably going to be from here i think https://github.com/clasp-developers/clasp/blob/main/src/lisp/kernel/cleavir/translation-environment.lisp#L67
13:02:51
drmeister
I see what you mean about the dynamic variables - I'm trying to remove the useless ones.
13:04:34
Bike
i think this cleavir stuff was working fine before, so i must have screwed it up as i was trying to get the rest working
13:05:49
drmeister
I've got some ideas on how to get it working. I've made a lot of changes but I haven't pushed anything. I'm doing it in a branch.
13:07:45
drmeister
In cclasp I changed the two function names for every function by appending "-xep" to the XEP function and "-local" to the local function - does that sound ok?
13:08:16
drmeister
It makes it easier to figure out what is going on with the debug info if they are distinguishable.
13:09:15
Bike
like, it will say you're in a call to FOO-XEP instead of just FOO like it says in the source
13:09:17
drmeister
What I want to do is get this compiling again and then if you could connect to my emacs I can walk us through what I've been up to.
13:17:28
yitzi
drmeister: Apparently someone just came up with a way to convert Arch's PKGBUILD to Debian packages. https://dur.hunterwittenborn.com/
13:17:51
drmeister
If I recall correctly these mangled names work by scanning right to left for ^^ and then you have "kind" information like "FN" then you keep scanning for ^ and then you have the package and then you scan for ^ and you have the symbol name
13:20:42
drmeister
Bike: The debug information is fussy. Each instruction in a function has to have a !dbg entry to a DILocation and that has to point to a DISubprogram that has the same name as the function.
13:21:51
drmeister
Inline functions carry their source information with them and I'm still not sure how the subprogram info is supposed to work.
13:23:34
drmeister
When you create an llvm function named XYZ and if there is one already then llvm names it XYZ.2 - we have to use (llvm-sys:get-name fn) to get the XYZ.2 and use that for the debug info.
13:24:30
drmeister
Functions that will be inlined will carry "XYZ" in their origins - we can't use those names for debug info.
15:26:37
drmeister
https://github.com/clasp-developers/clasp/blob/dbginline/src/lisp/kernel/cleavir/translation-environment.lisp#L134
16:39:46
yitzi
drmeister: Managed to build a deb package for llvm13! https://plaster.tymoon.eu/view/2522#2522
16:44:01
drmeister
Bike: Do you have any more ideas about how to organize the debug information for lexical variables?
16:47:57
yitzi
drmeister: Was there a reason for the SBCL 2.1 version check? Was there a specific feature in 2.1 versus 2.0 that the build script needed?
16:50:30
drmeister
There are older versions of sbcl that gave us trouble. I think I picked 2.1 because that was what I had.
17:27:45
Bike
i don't know why dbg-variable-alloca stopped working, it really looks fine to me. hrm.
17:32:33
drmeister
It's questionable if the libunwind is even necessary. Can you switch UNWINDER to use libgcc and get it to build?
17:33:00
drmeister
I hit the bad backtrace problem on the weekend and then as I was trying to figure out what it was it went away again.
17:34:11
drmeister
I'm going to hard code it once we figure out what we are going to go forward with.
17:41:09
drmeister
Now the header files are wrong - a scraper run is blowing up. I'll give it a few min to get to the end to see what header it can't find.
17:42:31
yitzi
Is there a flag I need to pass to the LLVM builder to get it build its own libunwind? LIBCXXABI_USE_LLVM_UNWINDER?
17:44:19
drmeister
Mostly: -DLLVM_ENABLE_PROJECTS=clang\;compiler-rt\;libunwind\;libcxxabi\;libcxx\;lldb
17:46:18
yitzi
thanks. Its about half way through with attempting to build a deb pkg for cando with gnu unwind, so I am just going to let it finish then rebuild using llvm unwind later.
17:58:02
Bike
or at least it's doing that thing where it vomits a millioni lines of preprocessor output at me
19:43:59
yitzi
drmeister: Looks like you removed all the boost libraries in wscript here https://github.com/clasp-developers/clasp/commit/266453ef506c59be5b565518d621e0159b28b2ca#
20:01:08
Bike
the time date code is using boost::posix_time, but maybe std::chrono can work for that
23:42:12
yitzi
drmeister: I've got to rebuild llvm with those patches, but I think I am actually getting to close to deb pkgs for clasp.