> >> As I understand it, the ARM kernel can now do something similar. So, > >> the only use for a __builtin_return_address(N) that used the frame > >> pointer chain would be if the code were compiled with nonstandard > >> options. > > > > Correct. > > Well, but wouldn't it still be nice if __builtin_return_address(N) was > implemented for N>0 by libcalling into the unwinder for you? Obviously > this would still have to return NULL at runtime when you're running on a > DW2 target without any EH frame data present in memory (and I guess it > wouldn't work on SjLj targets either), but wouldn't it still be a nice > convenience feature for users?
There are sufficiently many caveats and system specific bits of weirdness that you probably just have to know what you're doing (or rely on backtrace(3) to do it for you). IMHO builtins are for things that you can't do in normal C. So __builtin_return_address(0) makes a lot of sense. Having it start guessing how to do N>0 much less so. Paul