Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

/*
 *	This simple classical example of recursion is useful for
 *	testing stack backtraces and such.
 */

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

#include "../lib/unbuffer_output.c"

int factorial (int);

int
main (int argc, char **argv, char **envp)
{
  gdb_unbuffer_output ();

#ifdef FAKEARGV
    printf ("%d\n", factorial (1)); /* commands.exp: hw local_var out of scope */
#else    
    if (argc != 2) {
	printf ("usage:  factorial <number>\n");
	return 1;
    } else {
	printf ("%d\n", factorial (atoi (argv[1])));
    }
#endif
    return 0;
}

int factorial (int value)
{
    int  local_var;

    if (value > 1) {
	value *= factorial (value - 1);
    }
    local_var = value;
    return (value);
} /* commands.exp: local_var out of scope  */