- User Since
- Jun 6 2018, 11:31 PM (102 w, 5 d)
Thu, May 21
Thu, May 14
Tue, May 12
Mon, May 11
Thu, May 7
Wed, May 6
Might as well merge the spr.h changes anyway, independent of the rest of this patch.
Sat, May 2
Fri, May 1
Apr 10 2020
Works for me on RB800 and X5000.
Works on X5000 and RB800.
Works on X5000, does not break on RB800.
Apr 4 2020
OK, I retested again and I can no longer reproduce the crashes I was having.
Mar 27 2020
Currently testing a fix.
Reroll against latest, still tweaking things.
Mar 26 2020
I don't have good data on it yet, just giving a heads up that I'm hitting crashes again. Clang crashes on exit, which is very reminicient of past memory corruption issues here. I don't currently have a rust to test with on ppc32 to check that.
OK, with a pure lld10 ppc32 build, this is apparently causing crashes in threaded programs again. I'm not sure what changed.
Might be possibly getting crashes on this again with clang10. Still investigating.
Confirmed on powerpc64 as well. With this patch, I can now netboot off of an iflib card, without it, I hit the assertion.
Mar 18 2020
Addressing comments. Working on further cleaning up.
I've now been running this for over a month on powerpcspe, powerpc, and powerpc64, with no additional issues.
- Extend ifunc support to ppc32 (requires the ppc32 lld10 patchset, will post them for review shortly)
Mar 17 2020
This has been in my tree for nearly a month now with no ill effects, I say go for it.
Mar 11 2020
Mar 9 2020
Compiles and boots on RB800 and X5000, and is a lot easier to reason about than the combined version.
I definitely approve conceptually.
Mar 4 2020
Looks fine to me as well.
Feb 25 2020
Only as far as "I'm netbooting, if there were something wrong with it I would have expected it to have crashed or hung at some point."
Feb 24 2020
Feb 23 2020
Without this change, lld10 will create a binary with *several* PT_LOAD sections, which ofw does not understand.
Feb 21 2020
Feb 19 2020
Boots OK on my RB800.
Feb 17 2020
Feb 12 2020
(A blatant error in that document is that it defines that the resolver takes no parameters. Given the resolver is called before the PLT is up and running, this is stupid, because on non x86* cpus, the cpu model information is coming from the auxv and is not directly available through an unprivileged instruction, so the workaround on x86* of __builtin_cpu_supports() calls is nonsensical. FreeBSD ifuncs always pass the available cpu feature flags in as parameters to the resolver, even on x86* where you can theoretically get it from a compiler builtin)
Is there any case where IRELATIVE is used outside of GNU IFUNC btw?
fwiw I believe obj->gnu_ifunc is a vestigial bit of an earlier attempt to do non-plt ifuncs that got killed off in rS343484 and is the same as you are doing now (i.e. non-plt ifuncs)
Feb 11 2020
OK, that appears to do the trick.
Feb 10 2020
yep, I moved the setting of addr up a bit and I no longer crash.
Ahh, right below. So I guess we're using it unitialized, so it uses a random pointer from the stack.
It did not.
I will be working on this offline in the background after reviewing the relevant past conversations.
Well, because I'm planning on removing the interface once I have converted everything over to INTRNG.
Feb 7 2020
I kinda wonder if what I'm running into is a corner case where the main program has no TLS section yet still creates threads.
Putting myself on the review list becasue this has been part of my local patchset for a long time.
Feb 5 2020
Feb 4 2020
ah, misread IRC, it was luporl who jhibbits was asking regarding debugging rust.
Feb 2 2020
OK. Got sidetracked by other float failures, but I might as well get this one in separately.
This is working nicely for me.
Jan 30 2020
Yeah, I used to see this too (on either power9 or amigaone x5000, can't remember which.) IIRC, the problem is that if the tb is significantly unsynced, the callwheel algorithm falls over and misses wakeups for things.
Jan 29 2020
Tested -j1024 /stand builds for powerpc, powerpc64, amd64, i386, aarch64, armv7, and riscv. No failures, significant speed improvement.
Jan 28 2020
This removes the public kernel function stack_save() from some of the platforms.