busybox/shell/ash_ptr_hack.c
<<
>>
Prefs
   1/* vi: set sw=4 ts=4: */
   2/*
   3 * Copyright (C) 2008 by Denys Vlasenko <vda.linux@googlemail.com>
   4 *
   5 * Licensed under GPLv2, see file LICENSE in this source tree.
   6 */
   7
   8struct globals_misc;
   9struct globals_memstack;
  10struct globals_var;
  11
  12#ifndef GCC_COMBINE
  13
  14/* We cheat here. They are declared as const ptr in ash.c,
  15 * but here we make them live in R/W memory */
  16struct globals_misc     *ash_ptr_to_globals_misc;
  17struct globals_memstack *ash_ptr_to_globals_memstack;
  18struct globals_var      *ash_ptr_to_globals_var;
  19
  20#else
  21
  22/* gcc -combine will see through and complain */
  23/* Using alternative method which is more likely to break
  24 * on weird architectures, compilers, linkers and so on */
  25struct globals_misc     *const ash_ptr_to_globals_misc __attribute__ ((section (".data")));
  26struct globals_memstack *const ash_ptr_to_globals_memstack __attribute__ ((section (".data")));
  27struct globals_var      *const ash_ptr_to_globals_var __attribute__ ((section (".data")));
  28
  29#endif
  30