blob: e7291a114d8ad3c3c68ddff361fe335760e592b6 [file] [log] [blame]
/*
* Copyright (c) 2011 The Native Client Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include <stdio.h>
typedef void (*FUN_PTR) (void);
#define ATTR_SEC(sec)\
__attribute__ ((__used__, section(sec), aligned(sizeof(FUN_PTR))))
#define MAKE_FUN(name) void name(void) { printf(#name "\n");}
MAKE_FUN(main_preinit1)
MAKE_FUN(main_preinit2)
MAKE_FUN(main_preinit3)
static const FUN_PTR array_preinit[] ATTR_SEC(".preinit_array") =
{ main_preinit1, main_preinit2, main_preinit3 };
MAKE_FUN(main_init1)
MAKE_FUN(main_init2)
MAKE_FUN(main_init3)
static const FUN_PTR array_init[] ATTR_SEC(".init_array") =
{ main_init1, main_init2, main_init3 };
MAKE_FUN(main_fini1)
MAKE_FUN(main_fini2)
MAKE_FUN(main_fini3)
static const FUN_PTR array_fini[] ATTR_SEC(".fini_array") =
{ main_fini1, main_fini2, main_fini3 };
/* NOTE: there is NO .prefini_array */
int main(void) {
return 0;
}