- User Since
- Jun 6 2014, 3:56 PM (141 w, 3 d)
Jan 17 2017
Jan 16 2017
Jan 14 2017
- Break up long lines
Dec 18 2016
- remove newline.
Dec 16 2016
- Fix typos in comment.
- Improve RTS linker support detection
- RTS linker: Better error message on PPC64
- RTS linker: Note runtime-linker-support
Dec 6 2016
Dec 5 2016
- Testsuite: rename config property
Dec 3 2016
I added a new property for runtime linker support to settings
- add to GHC info if RTS linker is supported
- Testsuite: skip another test when no RTS linker
- Fix typo.
Dec 2 2016
Dec 1 2016
Oct 11 2016
Inline comment done.
Oct 10 2016
- Move write barrier and add comment
Oct 6 2016
Sep 30 2016
- Add note referring to Power ISA specification
Sep 28 2016
Sep 25 2016
Sep 11 2016
Aug 7 2016
Aug 1 2016
Thank you Alex!
Jul 31 2016
Builds on PowerPC 64-bit now.
Jul 29 2016
This builds on PowerPC 64-bit big endian.
One macro is still AMD/Intel specific.
Please support all 64-bit platforms. See my inline comment.
Jul 28 2016
Jun 21 2016
Jun 13 2016
Please let me know if I need to add more information here.
- Improve comment.
- Explain why we need NOPs after a call.
Jun 12 2016
- untabify C file
Forgot the first commit (again) :-(
Jun 1 2016
May 27 2016
- update file path in comment
- Improve comments after code review.
May 25 2016
May 19 2016
May 18 2016
Add x86_64 assembler output.
May 17 2016
May 16 2016
Submit all commits.
Only apply to PPC as the title says.
- Revert "RTS: Use _sync_* built-ins on all systems"
- PPC: Fix atomic_dec in RTS.
I missed that one when I edited the description, sorry!
@hvr had asked for this commit to be included in 8.0.1 (which unfortunately needs to be re-spun); however I'll admit that I'm a little hesitant to merge something that touches all of our platforms like this. As far as I can tell there are three options here,
- Wait until 8.0.2 to merge this
- Only merge the PPC part of this into 8.0.1
- Be very very careful and merge the whole thing into 8.0.1
I'm really not keen on the last option. What do you think, @trommler?
I would be fine with option two. I'll update the diff accordingly and prepare another diff
for the other systems.
Forgot trailing ~, so first commit was missing.
May 13 2016
May 5 2016
Apr 8 2016
Replace diff to recover lost commits.
- Fix typo and break long line.
Mar 24 2016
Validate passes on powerpc64. Great job @hvr!
Build on powerpc64 is started. I'll report back as soon as it is done.
Validates on powerpc64.
Started validate on powerpc64...
Mar 23 2016
It validates on powerpc64.
Mar 21 2016
A rough idea how we could confine the ABI idiosyncrasies to the PPC NCG.
Mar 20 2016
Two minor warnings that make validate fail due to -Werror
I added a few comments on NOPs.
Mar 5 2016
T9577 can be enabled for powerpc64.
The new patch validates on PowerPC 64-bit big-endian.
Feb 17 2016
Feb 15 2016
Jan 14 2016
Jan 12 2016
The proposed patch passes validate on OS X 10.10.5 Yosemite.
Jan 9 2016
I'll run validate on Mac OS next week and report back the results.
- fix T10458 test
Dec 21 2015
Dec 20 2015
Sorry about that. The second sentence of 5 should be added to 4.
I like the idea of making separate .sos for the object files and having a separate dummy .so to link them together. However, I think you will have difficulty with unloading the old one, because you can't unload old shared objects until all references to them from the heap have disappeared, and there's no way to do this reliably. We have functionality to track references and unload objects in the RTS linker (CheckUnload.c) but (a) it doesn't work for objects loaded with dlopen() (that might be fixable) and (b) we don't rely on it happening in a timely manner, it just happens in the background. To guarantee that you have no references from the heap is really hard, and even if you get it working it's fragile.
I see, the RTS has to determine when a shared object can be unloaded (dlcloseed). I assumed this was done in higher layers.
But you could just not unload the old object. Then you'll need to continue using RTLD_LOCAL, right? Or maybe you were planning to keep using RTLD_LOCAL, I'm not sure.
I think we must still use RTLD_LOCAL to support overriding symbols. Perhaps it does not make a difference when we use -Bsymbolic to prepare the dummy shared object. I will investigate in Trac #11238.
Dec 18 2015
I wonder if I should continue with my work on Trac #11238 given the "wrong" in your comment.
Dec 17 2015
Dec 16 2015
add regression test
I created Trac #11238 for a redesign of dynamic linking.
But I'm not sure this is the right thing to do.
Could you explain why?
Why don't we link the libraries on the command line with global scope?
Here are my reasons against loading dynamic C libraries with global scope:
- We avoid having to expand the foreign function interface to have local or global scope as an additional parameter. This is a minor issue.
- We don't have to do all the work of finding the correct dynamic library ourselves, looking through the paths, asking the C compiler for paths, and interpreting a linker script. The link editor (ld) does an excellent job at preparing a shared library in a way that the system runtime linker will find and load all required libraries. This made me decide to take the route implemented in this patch.
Dec 15 2015
Rebase onto HEAD.
Rebased the patch and now validating again...
Nov 10 2015
Oct 7 2015
I ran validate with and without the patch on powerpc64 (big endian) and get the same number of errors.
Oct 1 2015
Jul 13 2015
The build on OS X still fails:
(First line folded for readability.)
Jun 24 2015
This looks like a problem with the bootstrap compiler and is not part of this Diff. Sorry about the noise.
Jun 23 2015
It seems that SRC_CC_OPTS is still sneaking in a -Wall.
Validate fails on OS X 10.10.3 with the following: