Page MenuHomeFreeBSD

theraven (David Chisnall)
User

Projects

User Details

User Since
Jun 4 2014, 10:37 AM (258 w, 4 d)

Recent Activity

Mar 26 2019

theraven added a comment to D19566: WIP to import libcxxabi.
In D19566#422302, @jhb wrote:

I had labored under the incorrect assumption that libcxxrt was somewhat abandoned and that all other libc++ consumers used libc++abi, however, it seems that it's only Apple and OpenBSD that use libc++abi. NetBSD still uses libcxxrt. Also, when I compared the repositories both libcxxrt and libcxxabi had basically no real activity in the last two years. libcxxabi had more commits, but they were all due to relicensing and moving to monorepo.

Mar 26 2019, 5:54 PM

Mar 15 2019

theraven added a comment to D19566: WIP to import libcxxabi.

I'd be very happy to replace the libelftc demangler with the one from libc++abi, but last time this was discussed there were some complaints about the significant increase in binary size. One solution that I'd considered is to replace the demangler in libc++abi with a stub that doesn't actually do any demangling and then import the libc++abi demangler into libc++, possibly excluding it from release builds of the static library (dynamically linked programs probably don't mind paying the size overhead).

Mar 15 2019, 3:00 PM

Mar 14 2019

theraven added a comment to D19566: WIP to import libcxxabi.

Please do not do this. libc++abi implements the Itanium ABI specification, but *not* GNU extensions. This is fine for Apple, because their Objective-C exceptions are thin wrappers around C++ exceptions, but other languages on non-Apple platforms (Objective-C definitely, I think Ada and a few others) rely on GNU extensions. These are supported by libsupc++ and libcxxrt. There's a reason that the product groups at $WORK picked libcxxrt for things that ship libc++...

Mar 14 2019, 12:33 PM

Feb 10 2019

theraven committed rP492624: Bump libobjc2 port to latest git head..
Bump libobjc2 port to latest git head.
Feb 10 2019, 6:08 PM

Feb 3 2019

theraven committed rP492056: Move Objective-C ports to the v2 GNUstep ABI..
Move Objective-C ports to the v2 GNUstep ABI.
Feb 3 2019, 3:38 PM

Jan 27 2019

theraven added a comment to D17529: Fix for possible ifunc bug.
In D17529#405556, @kib wrote:

I am going to commit this shortly, with 'Submitted by: theraven'.

Jan 27 2019, 11:44 AM

Jan 21 2019

theraven abandoned D17529: Fix for possible ifunc bug.
In D17529#403296, @kib wrote:

Yes, I agree from reading of the code. I suspect that I left the chunk because I wanted to keep dlopen() handling as is, but later added the initlist_objects_ifunc() call in dlopen_object().
If you can test that the latest amd64 head boots multiuser with your change applied, please commit and MFC to 12+11.

Jan 21 2019, 12:40 PM

Jan 18 2019

theraven added a comment to D17529: Fix for possible ifunc bug.
In D17529#403239, @kib wrote:
In D17529#374132, @kib wrote:

I think you somehow failed to provide the explanation of your case. Esp. the last paragraph of the description is confusing, please recheck the order of dependencies and order of resolution and correct it so I can understand. Better yet, provide the minimal example of the self-contained code which demonstrates the issue.

Sorry for the delay in getting back to this. I hoped that D18400 would fix it, but now that I've upgraded to 12, I'm still seeing the issue. We have a library that exposes a function with an ifunc resolve. The ifunc resolver calls another function in the same library, via the PLT. When a second library links against our library and includes a non-PLT relocation for our ifunc symbol, our ifunc resolver invokes a function via a PLT stub, but the PLT stub is not yet initialised and so this dies.
The problem is in libexec/rtld-elf/amd64/reloc.c where, in reloc_non_plt, it calls rtld_resolve_ifunc without checking that defobj is relocated. Adding this before the call is almost certainly the wrong solution, but does address the problem:

if (!defobj->relocated)
    relocate_object(__DECONST(Obj_Entry *, defobj), false, obj_rtld, flags & ~SYMLOOK_IFUNC, lockstate);

I think the correct fix most likely involved doing something a little bit closer to this, and deferring ifunc resolution until after the library implementing the ifunc has had its non-ifunc relocations applied.

This is exactly how the current rtld ifunc resolution works:

  • first all objects gets their non-plt non-ifunc relocations resolved.
  • second all objects gets their ifuncs resolved, including plt resolution if LD_BIND_NOW.
  • third pass where init functions are called.

The second pass (for ifuncs) is performed in the reverse-init order, same as the third pass.

Jan 18 2019, 2:30 PM
theraven added a comment to D17529: Fix for possible ifunc bug.
In D17529#374132, @kib wrote:

I think you somehow failed to provide the explanation of your case. Esp. the last paragraph of the description is confusing, please recheck the order of dependencies and order of resolution and correct it so I can understand. Better yet, provide the minimal example of the self-contained code which demonstrates the issue.

Jan 18 2019, 1:22 PM

Dec 31 2018

theraven created D18700: Move Objective-C ports to the v2 GNUstep ABI..
Dec 31 2018, 3:54 PM

Dec 29 2018

theraven added a comment to D18672: Backport two Objective-C bug fixes to devel/llvm70.

There may be a few more changes coming. I can now build all of the gnustep-app packages with the new ABI, but sope2 fails to link with some interesting errors.

Dec 29 2018, 11:06 AM

Dec 28 2018

theraven created D18672: Backport two Objective-C bug fixes to devel/llvm70.
Dec 28 2018, 5:49 PM

Oct 12 2018

theraven created D17529: Fix for possible ifunc bug.
Oct 12 2018, 8:45 AM

Aug 17 2018

theraven added a comment to D16768: Don't depend on implicit header dependencies in dtc.

These changes look fine, but please send a PR on GitHub and then merge to FreeBSD from upstream.

Aug 17 2018, 3:08 PM

Feb 10 2018

theraven added a comment to D14285: Added SAL annotatations to system calls.

I wonder how we prevent these from getting out of sync (or check their correctness in the first place). How feasible is it to add a dynamic check along the lines of WITNESS that would record these annotations for each block of memory and then check that copyin / copyout were not done past the declared length, or in the wrong direction? I suspect a static analysis would be too hard unless we are willing to propagate these annotations all of the way down into the kernel, unless the copyin / copyout are always done near the system call layer.

Feb 10 2018, 11:50 AM

Jan 7 2018

theraven added a comment to D13529: Change default version of samba to 4.6.

I saw something similar. This upgrade first failed because of a samba44 samba46 conflict. Running it again silently removed samba44 (nothing in my scrollback indicates that 4.4 will be removed) and installed 4.6. Not a great user experience.

Jan 7 2018, 1:19 PM

Dec 13 2017

theraven added a comment to V7: Should man(1)'s default pager change to "less -s"?.

I don't have an exhaustive list, and even if we fix all of them in the base system, there will be others in ports. This is why we have things like $PAGER - to avoid needing to hard-code defaults. If the project believes that less is a better default pager than more then we should modify /etc/profile or something to set PAGER=less, not go and modify all of the tools by hand to use less (and if there are any tools that don't respect $PAGER, $EDITOR and so on then they are buggy and should be fixed).

Dec 13 2017, 3:44 PM · manpages
theraven added a comment to V7: Should man(1)'s default pager change to "less -s"?.

I can't help feeling that this poll is really asking the wrong question. There are a bunch of things like this, for example:

Dec 13 2017, 11:17 AM · manpages

Dec 12 2017

theraven added a comment to V7: Should man(1)'s default pager change to "less -s"?.

What are the changes? I've only ever used less on GNU systems where the more install is ancient and doesn't support scrolling up. I have no opinion if I'm not going to notice the difference, but without knowing what the 'few things less does differently' are I'd vote no to avoid surprises.

Dec 12 2017, 6:06 PM · manpages

Dec 3 2017

theraven committed rP455401: Fix configure options for gnustep-make.
Fix configure options for gnustep-make
Dec 3 2017, 12:24 PM

Nov 3 2017

theraven added a comment to D12928: Fix new -Werror compiler warnings in binutils.

I don't have strong opinions about this - hopefully this code can be fixed by some judicious application of svn rm in the near future...

Nov 3 2017, 2:44 PM

Nov 2 2017

theraven accepted D11925: Export std::get_new_handler() from libcxxrt.so.
Nov 2 2017, 2:19 PM

Oct 1 2017

theraven added a comment to D10363: libc: Do not refer to _DefaultRuneLocale in ctype inlines..

This probably means that we no longer need to expose _DefaultRuneLocale in the header.

Oct 1 2017, 3:08 PM

Sep 7 2017

theraven committed rS323277: Document some invariants for the XLC_ enum..
Document some invariants for the XLC_ enum.
Sep 7 2017, 5:52 PM

Aug 27 2017

theraven committed rP448805: Update laternamagica to the latest release..
Update laternamagica to the latest release.
Aug 27 2017, 8:21 AM

Aug 26 2017

theraven committed rP448766: Update GNUmail and Pantomime to the latest versions..
Update GNUmail and Pantomime to the latest versions.
Aug 26 2017, 10:29 AM
theraven committed rP448759: Remove the OpenSSL option from lang/gnustep-base.
Remove the OpenSSL option from lang/gnustep-base
Aug 26 2017, 10:25 AM

Aug 21 2017

theraven committed rP448472: Update GNUstep core libraries..
Update GNUstep core libraries.
Aug 21 2017, 1:27 PM

Jul 14 2017

theraven added inline comments to D4964: Protect calls to explicit_bzero() via by explicitly disabling the link-time and other optimizations that can cause code elimination..
Jul 14 2017, 6:20 PM

Nov 26 2016

theraven added a comment to D8642: usr.bin/Makefile: Make dtc depend on MK_FDT.

Is this bad? Licensing aside, dtc is useful as a cross-build and cross-development tool. We use it extensively on x86 servers that make no use of FDT.

Nov 26 2016, 1:11 PM

Aug 6 2016

theraven accepted D7427: Continuation of D7224..

All sounds sensible to me.

Aug 6 2016, 10:11 AM
theraven added a comment to D7427: Continuation of D7224..

Thank you for all of the time that you've spent on this. __cxa_thread_atexit is not in the latest version of the ABI spec, so it's currently an informal convention between the compiler and runtime library. The compiler doesn't check for failure, so it's probably best to abort for dangerous failures. The compiler-generated code probably should be checking for failure, invoking the destructor for the object, and throwing an exception, but that's something for WG21 to decide.

Aug 6 2016, 9:59 AM

Jul 22 2016

theraven added inline comments to D7271: libcxxrt: add padding in __cxa_allocate_* to fix alignment.
Jul 22 2016, 7:11 AM

Mar 13 2016

theraven added a comment to D5565: Modify kernel MIPS assembly to conform to MIPS ABI convention of using $t9 as target $pc.

While I agree that we need this in CheriBSD for experimentation with clang, I'd rather that we didn't put it in FreeBSD head unless we have a desire to make the kernel position independent (I've not looked at how we do modules on MIPS, so this may be a real requirement). On in-order implementations, the presence of the delay slot means that the jal can be resolved in time for instruction fetch to succeed, so we don't use a branch predictor table entry (and we won't accidentally alias with another branch in userspace somewhere). This is likely to have fairly complex performance implications on the variety of MIPS hardware available currently.

Mar 13 2016, 7:13 PM

Mar 1 2016

theraven committed rP409858: Remove lines accidentally committed referring to uncommitted work-in-progress….
Remove lines accidentally committed referring to uncommitted work-in-progress…
Mar 1 2016, 10:16 AM
theraven committed rP409857: Update CheriVis to the latest version..
Update CheriVis to the latest version.
Mar 1 2016, 10:09 AM
theraven committed rP409856: Add port for the cheri streamtrace library / tool..
Add port for the cheri streamtrace library / tool.
Mar 1 2016, 10:07 AM

Feb 29 2016

theraven committed rP409818: Add GNUstep Make as a run-time dependency of GNUstep Base..
Add GNUstep Make as a run-time dependency of GNUstep Base.
Feb 29 2016, 5:07 PM

Jan 18 2016

theraven added inline comments to D4980: Avoid C++ namespace pollution from POSIX headers.
Jan 18 2016, 3:21 PM
theraven added inline comments to D4980: Avoid C++ namespace pollution from POSIX headers.
Jan 18 2016, 1:16 PM
theraven added a comment to D4964: Protect calls to explicit_bzero() via by explicitly disabling the link-time and other optimizations that can cause code elimination..

Not really. The really correct solution is to introduce a __builtin_secure_bzero() that the compiler knows it is now allowed to elide. Anything else is trying to trick the compiler into thinking that it doesn't know what is happening.

Jan 18 2016, 9:45 AM
theraven added a comment to D4964: Protect calls to explicit_bzero() via by explicitly disabling the link-time and other optimizations that can cause code elimination..

Hi Jim,

Jan 18 2016, 8:56 AM

Dec 29 2015

theraven committed rS292876: Improvements to BSD-licensed DTC..
Improvements to BSD-licensed DTC.
Dec 29 2015, 4:30 PM

Oct 26 2015

theraven committed rS289996: Update some obsolete information in the HACKING document..
Update some obsolete information in the HACKING document.
Oct 26 2015, 11:03 AM
theraven committed rS289995: Ensure that dtc is built in C++11 mode..
Ensure that dtc is built in C++11 mode.
Oct 26 2015, 10:37 AM

Oct 25 2015

theraven committed rS289935: Lots of improvements to the BSD-licensed dtc.
Lots of improvements to the BSD-licensed dtc
Oct 25 2015, 2:52 PM

Oct 22 2015

theraven committed rD47638: Finish an editing pass. A couple of issues remain:.
Finish an editing pass. A couple of issues remain:
Oct 22 2015, 1:18 PM

Oct 14 2015

theraven added a comment to V6: Should /usr/local be included in FreeBSD's toolchain paths?.

What is the one argument that 'seals the deal' for you?

Oct 14 2015, 8:09 AM

Oct 13 2015

theraven added a comment to V6: Should /usr/local be included in FreeBSD's toolchain paths?.

When building base, we explicitly override the system include and linker paths, so this change will not affect things. When building ports, we explicitly add LOCALBASE to the compiler paths. Obviously, both should be tested carefully with a patched compiler to test.

Oct 13 2015, 11:32 AM

Oct 8 2015

theraven committed rP398828: Fix the post-install message to only refer to ports that actually exist..
Fix the post-install message to only refer to ports that actually exist.
Oct 8 2015, 2:18 PM

Sep 19 2015

theraven committed rP397316: Add port for PikoPixel.
Add port for PikoPixel
Sep 19 2015, 10:59 AM
theraven closed D3697: Add port for PikoPixel by committing rP397316: Add port for PikoPixel.
Sep 19 2015, 10:59 AM
theraven retitled D3697: Add port for PikoPixel from to Add port for PikoPixel.
Sep 19 2015, 10:36 AM
theraven committed rP397315: Make all GNUstep ports install into the System domain so that the Local….
Make all GNUstep ports install into the System domain so that the Local…
Sep 19 2015, 10:34 AM

Sep 3 2015

theraven added a comment to D3043: _FORTIFY_SOURCE support.

I did a detailed review, which Phabricator appears to have eaten. I'll try to summarise here, as there was some talk of committing this, and it is a long way away from being ready to go in the tree:

Sep 3 2015, 11:53 AM · fortify source

Sep 1 2015

theraven added a comment to D3459: GSoC 2015: Core support for _FORTIFY_SOURCE.

I've done a partial review. This needs a lot more work before it's close to being ready to commit. I stopped after seeing the same logic errors repeated in many functions - there may be new kinds of error, but please fix the ones that are repeated everywhere first.

Sep 1 2015, 10:43 AM · fortify source

Aug 13 2015

theraven accepted D3374: Make clear the bcopy(3) man page..

LGTM.

Aug 13 2015, 8:12 AM

Aug 9 2015

theraven added inline comments to D3342: Unicode collation support.
Aug 9 2015, 11:43 AM

Aug 7 2015

theraven committed rP393694: Update libobjc2 to the latest release..
Update libobjc2 to the latest release.
Aug 7 2015, 2:07 PM

Jul 29 2015

theraven added a comment to D2172: Implement native eventfd system call..

kmacy has been working on bringing over the notify(3) APIs from Darwin[1], which appear to provide a superset of this functionality. It would be worth comparing the two and seeing what can be shared between the two. Ideally, the file descriptor returned by notify_register_file_descriptor would be of the same kind as that returned by eventfd and, outside of the Linuxulator (where it needs to be a system call for binary compat), we might be able to implement the eventfd stuff entirely in libc using the same system calls as notify(3).

Jul 29 2015, 5:59 PM

Jul 4 2015

theraven committed rP391304: Bump port revision (forgot to do this when updating)..
Bump port revision (forgot to do this when updating).
Jul 4 2015, 12:34 PM

Jul 2 2015

theraven retitled D2977: Clean up GNUstep ports installation domains from to Clean up GNUstep ports installation domains.
Jul 2 2015, 3:31 PM

Jul 1 2015

theraven committed rP391062: Update GNUstep ports to their latest versions..
Update GNUstep ports to their latest versions.
Jul 1 2015, 1:50 PM
theraven closed D2961: Update GNUstep ports by committing rP391062: Update GNUstep ports to their latest versions..
Jul 1 2015, 1:50 PM
theraven updated the diff for D2961: Update GNUstep ports.

Address iconv issues.

Jul 1 2015, 1:06 PM
theraven added inline comments to D2961: Update GNUstep ports.
Jul 1 2015, 10:16 AM
theraven updated the diff for D2961: Update GNUstep ports.

Fix iconv usage by passing CPPFLAGS to make as OBJCFLAGS

Jul 1 2015, 10:07 AM
theraven added inline comments to D2961: Update GNUstep ports.
Jul 1 2015, 10:06 AM
theraven added inline comments to D2961: Update GNUstep ports.
Jul 1 2015, 7:59 AM

Jun 30 2015

theraven edited P67 Build log.
Jun 30 2015, 8:50 PM
theraven updated the diff for D2961: Update GNUstep ports.

Updated the diff fixing a couple of issues after trying

Jun 30 2015, 8:49 PM
theraven added a comment to D2961: Update GNUstep ports.

I can do an exp-run too, I don't know if you tested all ports depending on gnustep?

Jun 30 2015, 4:49 PM
theraven retitled D2961: Update GNUstep ports from to Update GNUstep ports.
Jun 30 2015, 4:13 PM

Jun 20 2015

theraven added a comment to D2877: More Apple-block function support.

Comments inline.

Jun 20 2015, 4:22 PM

Jun 18 2015

theraven added a comment to D2850: Add __cxa_deleted_virtual to libcxxrt's version map.

Phabricator doesn't seem to want to show me the diff, but it sounds sensible. Have we shipped a version in 9/10 that uses this symbol? If so then we should check that old binaries still run with the new .so, otherwise I think it's fine.

Jun 18 2015, 8:38 AM

May 27 2015

theraven added a comment to D1932: Remove the non-standard CC alias for c++.

It is problematic for the compiler to differentiate between being invoked as CC and as cc (clang and gcc both have to work on case-insensitive filesystems). The convention to have CC as an alias for c++ comes from some SysV platforms (though not from Linux, which does not install the CC alias). On OS X, cc and CC are the same file, as the filesystem is case preserving but not case sensitive.

May 27 2015, 11:03 AM

May 15 2015

theraven added a comment to D2411: Support clang-specific type safety attributes in fcntl(2).

Hmm, that doesn't look as if it should break. The macros still expand to an integer constant expression. You'll lose the type checking when you do this, but the initialisation should still work. What is the compiler error that you see?

May 15 2015, 8:10 AM

May 14 2015

theraven added a comment to D2411: Support clang-specific type safety attributes in fcntl(2).

What things needed rewriting to work with this?

May 14 2015, 4:41 PM

Apr 24 2015

theraven committed rS281927: __xlocale_C_ctype should not be const. It contains a reference count that is….
__xlocale_C_ctype should not be const. It contains a reference count that is…
Apr 24 2015, 10:21 AM
theraven committed rS281925: Small changes to locale-related man pages..
Small changes to locale-related man pages.
Apr 24 2015, 10:18 AM

Mar 20 2015

theraven added a comment to D2101: Introduce the gcc/clang nonnull attribute in the signal and pthread headers..

These look fine, but it would be nice to have some way of telling whether we've got all of them. For example, most of the sig* functions don't appear to define in their man pages what a null sigset_t means, so why do only some of them get the attribute?

Mar 20 2015, 9:03 AM

Feb 21 2015

theraven accepted D1932: Remove the non-standard CC alias for c++.

Thank you!

Feb 21 2015, 9:27 PM

Dec 29 2014

theraven added inline comments to D1390: Update libcxxrt to upstream commit 00bc29eb6513624824a6d7db2ebc768a4216a604.
Dec 29 2014, 9:04 PM

Oct 21 2014

theraven accepted D982: Implement __cxa_throw_bad_array_new_length in libcxxrt.
Oct 21 2014, 10:16 AM
theraven added a comment to D982: Implement __cxa_throw_bad_array_new_length in libcxxrt.

Looks good to me.

Oct 21 2014, 9:59 AM
theraven added a comment to D982: Implement __cxa_throw_bad_array_new_length in libcxxrt.

Please can you submit the fixed version of this as a pull request upstream too, and I'll approve it there so that we don't have more pain merging the next time.

Oct 21 2014, 8:19 AM

Jul 26 2014

theraven added a comment to D482: Locale change in stdtime/strftime.c from Apple Inc..

Looks good to me.

Jul 26 2014, 11:39 AM

Jul 7 2014

theraven added a comment to D365: Turn readline into an internallib.

Or, right, sorry. I misunderstood and thought it was being moved into private. Reading it a bit more carefully, it looks fine.

Jul 7 2014, 7:32 AM

Jul 6 2014

theraven added a comment to D365: Turn readline into an internallib.

If gdb is the only in-tree consumer of libreadline, can we just statically link it into gdb and remove the .so entirely?

Jul 6 2014, 5:44 PM