On Wed, Mar 5, 2014 at 4:34 AM, Ian Lance Taylor <i...@google.com> wrote: > The GNU glibc qsort function will call malloc in some cases. That makes > it unsuitable for libbacktrace, which is intended to work when called > from a signal handler. This patch changes libbacktrace to use an > internal qsort function. > > I'm posting this for comments in case anybody sees anything wrong with > the implementation. I'll commit it in a day or two if I don't hear > anything. > > Bootstrapped and ran libbacktrace and Go tests on > x86_64-unknown-linux-gnu.
Doesn't it make sense to put this into libiberty and call it sigsafe_qsort or qsort_sigsafe? (not sure if there is a standard suffix/prefix for signal-safe variants of functions like _r is for thread-safe variants) Thanks, Richard. > Ian > > > 2014-03-04 Ian Lance Taylor <i...@google.com> > > * sort.c: New file. > * stest.c: New file. > * internal.h (backtrace_qsort): Declare. > * dwarf.c (read_abbrevs): Call backtrace_qsort instead of qsort. > (read_line_info, read_function_entry): Likewise. > (read_function_info, build_dwarf_data): Likewise. > * elf.c (elf_initialize_syminfo): Likewise. > * Makefile.am (libbacktrace_la_SOURCES): Add sort.c. > (stest_SOURCES, stest_LDADD): Define. > (check_PROGRAMS): Add stest. > >