digitalmars.D - Dwarf Exception Handling now on FreeBSD!
- Walter Bright (12/12) Jan 30 2016 32/64 support now on Linux and FreeBSD.
- ZombineDev (9/24) Jan 31 2016 Nice work!
- Charles (4/7) Jan 31 2016 Are there any future plans for Win64 since it won't ever support
- Walter Bright (6/8) Jan 31 2016 VC++'s Win64 exception handling scheme is not at all the Win32 scheme an...
- Rikki Cattermole (7/16) Jan 31 2016 I believe the last link will be most helpful. But first will give you a
- Walter Bright (3/21) Jan 31 2016 They have bits and pieces of the info, but nothing about what is actuall...
- Rikki Cattermole (5/31) Jan 31 2016 Hmm you're right.
- Charles (5/7) Feb 01 2016 Gotcha, is this something you'd expect to be easily obtainable
- Jonathan M Davis (8/12) Feb 03 2016 It's always nice when that happens, especially when there's not
- Brad Roberts via Digitalmars-d (6/17) Feb 03 2016 I haven't put much time into investigation, but the last time I tried it...
- Jacob Carlborg (9/16) Feb 04 2016 Perhaps it's worth taking a look at Docker. As far as I understand
- Brad Roberts via Digitalmars-d (5/19) Feb 04 2016 It's not about mechanism, it's about compute hours in the day. Yes,
- Jacob Carlborg (5/9) Feb 04 2016 Ah, I see. What's the average time for a pull request for the complete
- Joakim (5/28) Feb 04 2016 One option to consider is installing FreeBSD 10 and then testing
- Jonathan M Davis (8/36) Feb 06 2016 I know that the druntime and Phobos unit tests pass on 11 (which
- Walter Bright (2/8) Feb 06 2016 Thanks, Jonathan!
32/64 support now on Linux and FreeBSD. https://github.com/D-Programming-Language/dmd/pull/5376 Turns out that FreeBSD is close enough to Linux that it "just worked". Recently, there was a long thread entitled "C++17" where people are asking for better C++ interoperability. Well, here's a ripe plum for anyone wanting valuable compiler street cred! Make the Dwarf EH support work on OSX 32 and 64. I bet that nearly all the work will be in changing the ELF fixups to MACH-O fixups in the gcc_except_table and eh_frame sections. Use an object dumper to see what g++ uses for fixups in those sections, and do the same. As for me, I'll be implementing C++ multiple inheritance class layout, because Manu's problems have made it clear we have to do that.
Jan 30 2016
On Sunday, 31 January 2016 at 06:34:26 UTC, Walter Bright wrote:32/64 support now on Linux and FreeBSD. https://github.com/D-Programming-Language/dmd/pull/5376 Turns out that FreeBSD is close enough to Linux that it "just worked". Recently, there was a long thread entitled "C++17" where people are asking for better C++ interoperability. Well, here's a ripe plum for anyone wanting valuable compiler street cred! Make the Dwarf EH support work on OSX 32 and 64. I bet that nearly all the work will be in changing the ELF fixups to MACH-O fixups in the gcc_except_table and eh_frame sections. Use an object dumper to see what g++ uses for fixups in those sections, and do the same. As for me, I'll be implementing C++ multiple inheritance class layout, because Manu's problems have made it clear we have to do that.Nice work! I suggest that after that you look into RAII C++ interop (calling C++ destructors at the end of the scope), because it is critical for interfacing with modern C++ projects that make heavy use of it. Adding dummy methods as the first members of an interface to satisfy the vtbl layout is quite error-prone and useless when you need to make the cleanup from the D side!
Jan 31 2016
On Sunday, 31 January 2016 at 06:34:26 UTC, Walter Bright wrote:Well, here's a ripe plum for anyone wanting valuable compiler street cred! Make the Dwarf EH support work on OSX 32 and 64.Are there any future plans for Win64 since it won't ever support dwarf exceptions from how I understand it? Or does it, and I'm strongly mistaken?
Jan 31 2016
On 1/31/2016 6:32 PM, Charles wrote:Are there any future plans for Win64 since it won't ever support dwarf exceptions from how I understand it? Or does it, and I'm strongly mistaken?VC++'s Win64 exception handling scheme is not at all the Win32 scheme and definitely not Dwarf EH. Supporting it would be an additional level of effort on par with supporting Dwarf EH, presuming documentation on it can be found. (I haven't looked for it.) If someone wants to search for a spec for it, that would be a good start.
Jan 31 2016
On 01/02/16 4:01 PM, Walter Bright wrote:On 1/31/2016 6:32 PM, Charles wrote:I believe the last link will be most helpful. But first will give you a good understanding and where to go(its for the linker). If anybody wishes to look more into it. https://msdn.microsoft.com/en-us/library/1deeycx5.aspx https://msdn.microsoft.com/en-us/library/swezty51.aspx https://msdn.microsoft.com/en-us/library/1eyas8tf.aspxAre there any future plans for Win64 since it won't ever support dwarf exceptions from how I understand it? Or does it, and I'm strongly mistaken?VC++'s Win64 exception handling scheme is not at all the Win32 scheme and definitely not Dwarf EH. Supporting it would be an additional level of effort on par with supporting Dwarf EH, presuming documentation on it can be found. (I haven't looked for it.) If someone wants to search for a spec for it, that would be a good start.
Jan 31 2016
On 1/31/2016 7:04 PM, Rikki Cattermole wrote:On 01/02/16 4:01 PM, Walter Bright wrote:They have bits and pieces of the info, but nothing about what is actually generated to, say, catch an exception.On 1/31/2016 6:32 PM, Charles wrote:I believe the last link will be most helpful. But first will give you a good understanding and where to go(its for the linker). If anybody wishes to look more into it. https://msdn.microsoft.com/en-us/library/1deeycx5.aspx https://msdn.microsoft.com/en-us/library/swezty51.aspx https://msdn.microsoft.com/en-us/library/1eyas8tf.aspxAre there any future plans for Win64 since it won't ever support dwarf exceptions from how I understand it? Or does it, and I'm strongly mistaken?VC++'s Win64 exception handling scheme is not at all the Win32 scheme and definitely not Dwarf EH. Supporting it would be an additional level of effort on par with supporting Dwarf EH, presuming documentation on it can be found. (I haven't looked for it.) If someone wants to search for a spec for it, that would be a good start.
Jan 31 2016
On 01/02/16 4:23 PM, Walter Bright wrote:On 1/31/2016 7:04 PM, Rikki Cattermole wrote:Hmm you're right. But on the plus side I found this: http://www.programmingunlimited.net/siteexec/content.cgi?page=libseh It even supports Digital Mars C/C++ compiler!On 01/02/16 4:01 PM, Walter Bright wrote:They have bits and pieces of the info, but nothing about what is actually generated to, say, catch an exception.On 1/31/2016 6:32 PM, Charles wrote:I believe the last link will be most helpful. But first will give you a good understanding and where to go(its for the linker). If anybody wishes to look more into it. https://msdn.microsoft.com/en-us/library/1deeycx5.aspx https://msdn.microsoft.com/en-us/library/swezty51.aspx https://msdn.microsoft.com/en-us/library/1eyas8tf.aspxAre there any future plans for Win64 since it won't ever support dwarf exceptions from how I understand it? Or does it, and I'm strongly mistaken?VC++'s Win64 exception handling scheme is not at all the Win32 scheme and definitely not Dwarf EH. Supporting it would be an additional level of effort on par with supporting Dwarf EH, presuming documentation on it can be found. (I haven't looked for it.) If someone wants to search for a spec for it, that would be a good start.
Jan 31 2016
On Monday, 1 February 2016 at 03:23:18 UTC, Walter Bright wrote:They have bits and pieces of the info, but nothing about what is actually generated to, say, catch an exception.Gotcha, is this something you'd expect to be easily obtainable (e.g. ask Microsoft Rep saying we want to make it easier for people to use their product?), or is this something that would probably require some sort of reverse engineering effort?
Feb 01 2016
On Sunday, 31 January 2016 at 06:34:26 UTC, Walter Bright wrote:32/64 support now on Linux and FreeBSD. https://github.com/D-Programming-Language/dmd/pull/5376 Turns out that FreeBSD is close enough to Linux that it "just worked".It's always nice when that happens, especially when there's not much FreeBSD-specific work going on, and the autotesters have generally been on older versions of FreeBSD such that issues on the newer versions don't always get noticed (e.g. for a while there, the shared library stuff passed the tests on FreeBSD 8 but not later; fortunately Martin got that fixed though). - Jonathan M Davis
Feb 03 2016
On 2/3/16 11:28 AM, Jonathan M Davis via Digitalmars-d wrote:On Sunday, 31 January 2016 at 06:34:26 UTC, Walter Bright wrote:I haven't put much time into investigation, but the last time I tried it, neither 9 nor 10 passed the test suite. If someone puts in the effort to get either or both of those working, I'd be happy to upgrade some of the freebsd testers to newer versions. There's currently 4 freebsd machines, so plenty of room to have a mix of versions. Not enough to test every combination of version and bitness, but enough to allow randomness to expose issues.32/64 support now on Linux and FreeBSD. https://github.com/D-Programming-Language/dmd/pull/5376 Turns out that FreeBSD is close enough to Linux that it "just worked".It's always nice when that happens, especially when there's not much FreeBSD-specific work going on, and the autotesters have generally been on older versions of FreeBSD such that issues on the newer versions don't always get noticed (e.g. for a while there, the shared library stuff passed the tests on FreeBSD 8 but not later; fortunately Martin got that fixed though). - Jonathan M Davis
Feb 03 2016
On 2016-02-03 21:18, Brad Roberts via Digitalmars-d wrote:I haven't put much time into investigation, but the last time I tried it, neither 9 nor 10 passed the test suite. If someone puts in the effort to get either or both of those working, I'd be happy to upgrade some of the freebsd testers to newer versions. There's currently 4 freebsd machines, so plenty of room to have a mix of versions. Not enough to test every combination of version and bitness, but enough to allow randomness to expose issues.Perhaps it's worth taking a look at Docker. As far as I understand there's experimental support for FreeBSD [1]. It uses ZFS, jail and the 64bit Linux compatibility layer. Seems to be possible to run both Linux and FreeBSD images in Docker for FreeBSD. Although I'm not sure if it's possible to mix 32bit and 64bit with Docker. [1] https://wiki.freebsd.org/Docker -- /Jacob Carlborg
Feb 04 2016
On 2/4/2016 1:27 AM, Jacob Carlborg via Digitalmars-d wrote:On 2016-02-03 21:18, Brad Roberts via Digitalmars-d wrote:It's not about mechanism, it's about compute hours in the day. Yes, making each machine a little more flexible would be useful for leveling out the progress across platforms, but there just isn't enough hardware in my fleet for adding a bunch more configurations to the matrix.I haven't put much time into investigation, but the last time I tried it, neither 9 nor 10 passed the test suite. If someone puts in the effort to get either or both of those working, I'd be happy to upgrade some of the freebsd testers to newer versions. There's currently 4 freebsd machines, so plenty of room to have a mix of versions. Not enough to test every combination of version and bitness, but enough to allow randomness to expose issues.Perhaps it's worth taking a look at Docker. As far as I understand there's experimental support for FreeBSD [1]. It uses ZFS, jail and the 64bit Linux compatibility layer. Seems to be possible to run both Linux and FreeBSD images in Docker for FreeBSD. Although I'm not sure if it's possible to mix 32bit and 64bit with Docker. [1] https://wiki.freebsd.org/Docker
Feb 04 2016
On 2016-02-04 10:43, Brad Roberts via Digitalmars-d wrote:It's not about mechanism, it's about compute hours in the day. Yes, making each machine a little more flexible would be useful for leveling out the progress across platforms, but there just isn't enough hardware in my fleet for adding a bunch more configurations to the matrix.Ah, I see. What's the average time for a pull request for the complete matrix? -- /Jacob Carlborg
Feb 04 2016
On Wednesday, 3 February 2016 at 20:18:52 UTC, Brad Roberts wrote:On 2/3/16 11:28 AM, Jonathan M Davis via Digitalmars-d wrote:One option to consider is installing FreeBSD 10 and then testing 8 and 9 in jails, which are the precursor to Linux containers. I used this approach years ago, when compiling Chromium for several FreeBSD versions.On Sunday, 31 January 2016 at 06:34:26 UTC, Walter Bright wrote:I haven't put much time into investigation, but the last time I tried it, neither 9 nor 10 passed the test suite. If someone puts in the effort to get either or both of those working, I'd be happy to upgrade some of the freebsd testers to newer versions. There's currently 4 freebsd machines, so plenty of room to have a mix of versions. Not enough to test every combination of version and bitness, but enough to allow randomness to expose issues.[...]It's always nice when that happens, especially when there's not much FreeBSD-specific work going on, and the autotesters have generally been on older versions of FreeBSD such that issues on the newer versions don't always get noticed (e.g. for a while there, the shared library stuff passed the tests on FreeBSD 8 but not later; fortunately Martin got that fixed though). - Jonathan M Davis
Feb 04 2016
On Wednesday, 3 February 2016 at 20:18:52 UTC, Brad Roberts wrote:On 2/3/16 11:28 AM, Jonathan M Davis via Digitalmars-d wrote:I know that the druntime and Phobos unit tests pass on 11 (which is what I'm currently running), and I'm fairly sure that they do on 10 (I don't know about 9), but I have no idea what the state of the dmd tests are on anything newer than 8. I'll have to see if I can find time to at least see what's currently working and report issues. - Jonathan M DavisOn Sunday, 31 January 2016 at 06:34:26 UTC, Walter Bright wrote:I haven't put much time into investigation, but the last time I tried it, neither 9 nor 10 passed the test suite. If someone puts in the effort to get either or both of those working, I'd be happy to upgrade some of the freebsd testers to newer versions. There's currently 4 freebsd machines, so plenty of room to have a mix of versions. Not enough to test every combination of version and bitness, but enough to allow randomness to expose issues.32/64 support now on Linux and FreeBSD. https://github.com/D-Programming-Language/dmd/pull/5376 Turns out that FreeBSD is close enough to Linux that it "just worked".It's always nice when that happens, especially when there's not much FreeBSD-specific work going on, and the autotesters have generally been on older versions of FreeBSD such that issues on the newer versions don't always get noticed (e.g. for a while there, the shared library stuff passed the tests on FreeBSD 8 but not later; fortunately Martin got that fixed though). - Jonathan M Davis
Feb 06 2016
On 2/6/2016 6:15 AM, Jonathan M Davis wrote:I know that the druntime and Phobos unit tests pass on 11 (which is what I'm currently running), and I'm fairly sure that they do on 10 (I don't know about 9), but I have no idea what the state of the dmd tests are on anything newer than 8. I'll have to see if I can find time to at least see what's currently working and report issues. - Jonathan M DavisThanks, Jonathan!
Feb 06 2016