1cc5f4c67fd362f725b86267d72469f8a338ae54dAlexey Samsonov//===----------- dlclose-test-so.cc -----------------------------*- C++ -*-===// 2d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// 3d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// The LLVM Compiler Infrastructure 4d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// 5d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// This file is distributed under the University of Illinois Open Source 6d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// License. See LICENSE.TXT for details. 7d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// 8d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany//===----------------------------------------------------------------------===// 9d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// 10d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// This file is a part of AddressSanitizer, an address sanity checker. 11d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// 12d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// Regression test for 13d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany// http://code.google.com/p/address-sanitizer/issues/detail?id=19 14d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany//===----------------------------------------------------------------------===// 15d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany#include <stdio.h> 16d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany 17d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryanystatic int pad1; 18d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryanystatic int static_var; 19d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryanystatic int pad2; 20d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany 21d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryanyextern "C" 22d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryanyint *get_address_of_static_var() { 23d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany return &static_var; 24d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany} 25d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany 26d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany__attribute__((constructor)) 27d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryanyvoid at_dlopen() { 28d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany printf("%s: I am being dlopened\n", __FILE__); 29d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany} 30d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany__attribute__((destructor)) 31d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryanyvoid at_dlclose() { 32d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany printf("%s: I am being dlclosed\n", __FILE__); 33d11a9639388defed6a26dd5e76932246bbe505efKostya Serebryany} 34