12ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//===----------- dlclose-test-so.cc -----------------------------*- C++ -*-===//
22ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//
32ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//                     The LLVM Compiler Infrastructure
42ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//
52ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov// This file is distributed under the University of Illinois Open Source
62ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov// License. See LICENSE.TXT for details.
72ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//
82ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//===----------------------------------------------------------------------===//
92ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//
102ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov// This file is a part of AddressSanitizer, an address sanity checker.
112ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//
122ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov// Regression test for
132ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov// http://code.google.com/p/address-sanitizer/issues/detail?id=19
142ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov//===----------------------------------------------------------------------===//
152ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov#include <stdio.h>
162ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov
172ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonovstatic int pad1;
182ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonovstatic int static_var;
192ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonovstatic int pad2;
202ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov
212ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonovextern "C"
222ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonovint *get_address_of_static_var() {
232ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov  return &static_var;
242ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov}
252ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov
262ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov__attribute__((constructor))
272ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonovvoid at_dlopen() {
282ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov  printf("%s: I am being dlopened\n", __FILE__);
292ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov}
302ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov__attribute__((destructor))
312ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonovvoid at_dlclose() {
322ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov  printf("%s: I am being dlclosed\n", __FILE__);
332ad9b21f865d305057deadb839d673cc499b439eAlexey Samsonov}
34