12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clangxx_msan -m64 -O0 %s -o %t && %run %t 2ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov 3ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov#include <assert.h> 4ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov#include <dlfcn.h> 5ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov#include <stdio.h> 6ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov#include <string.h> 7ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov 8ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanovint main(void) { 9ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov void *p = dlopen("/bad/file/name", RTLD_NOW); 10ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov assert(!p); 11ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov char *s = dlerror(); 12ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov printf("%s, %zu\n", s, strlen(s)); 13ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov return 0; 14ae7db43b4e8341c0f1c3166ffcf2b7c2aa7391f7Evgeniy Stepanov} 15