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

int unused_var = 7;
int used_var = 7;

int
unused_func (int v)
{
  return 3 * unused_var;
}

int
__attribute__((noinline))
used_func (int v)
{
  return 2 * used_var;
}

int
main (void)
{
  return used_func (5);
}

void
dummy_func (void)
{
  /* These are here in case the target prepends an underscore to
     the start of function names.  They are inside a dummy function
     so that they will appear at the end of gcc's assembler output,
     after the definitions of main() and used_func(), rather than
     at the beginning of the file.  */

  __asm__(".ifndef main\n\
.global main\n\
.set main, _main\n\
.endif");

  __asm__(".ifndef used_func\n\
.global used_func\n\
.set used_func, _used_func\n\
.endif");
}