#include <execinfo.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>


static int
compare (const void *p1, const void *p2)
{
  void *ba[20];
  int n = backtrace (ba, sizeof (ba) / sizeof (ba[0]));
  if (n != 0)
    {
      char **names = backtrace_symbols (ba, n);
      if (names != NULL)
	{
	  int i;
	  printf ("called from %s\n", names[0]);
	  for (i = 1; i < n; ++i)
	    printf ("            %s\n", names[i]);
	  free (names);
	}
    }

  return *(const uint32_t *) p1 - *(const uint32_t *) p2;
}


int
main (int argc, char *argv[])
{
  uint32_t arr[20];
  size_t cnt;

  for (cnt = 0; cnt < sizeof (arr) / sizeof (arr[0]); ++cnt)
    arr[cnt] = random ();

  qsort (arr, sizeof (arr) / sizeof (arr[0]), sizeof (arr[0]), compare);

  for (cnt = 0; cnt < sizeof (arr) / sizeof (arr[0]); ++cnt)
    printf ("%" PRIx32 "\n", arr[cnt]);

  return 0;
}
