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

// RUN: %clang %s -O0 -emit-llvm -S -o - | FileCheck %s

// This should call rb_define_global_function, not rb_f_chop.
void rb_define_global_function (const char*,void(*)(),int);
static void rb_f_chop();
void Init_String() {
  rb_define_global_function("chop", rb_f_chop, 0);
}
static void rb_f_chop() {
}

// CHECK: call{{.*}}rb_define_global_function

// PR10335
typedef   void (* JSErrorCallback)(void);
void js_GetErrorMessage(void);
void JS_ReportErrorNumber(JSErrorCallback errorCallback, ...);
void Interpret() {
  JS_ReportErrorNumber(js_GetErrorMessage, 0);
  
  // CHECK: call {{.*}}void ({{.*}}, ...) @JS_ReportErrorNumber({{.*}}@js_GetErrorMessage
}




// PR10337
struct sigaction { int (*_sa_handler)(int); };
typedef int SigHandler ();
typedef struct sigaction sighandler_cxt;
SigHandler *rl_set_sighandler(ohandler)
sighandler_cxt *ohandler;  {
  return 0;
}

void rl_set_signals() {
  SigHandler *oh;
  oh = rl_set_sighandler(0);
}