/* Generated automatically. */
static const char configuration_arguments[] = "/var/tmp/portage/cross-armv7a-cros-linux-gnueabihf/gcc-4.9.2-r278/work/gcc-4.9.2/gcc-4.9/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/armv7a-cros-linux-gnueabihf/gcc-bin/4.9.x --datadir=/usr/share/gcc-data/armv7a-cros-linux-gnueabihf/4.9.x --includedir=/usr/lib/gcc/armv7a-cros-linux-gnueabihf/4.9.x/include --with-gxx-include-dir=/usr/lib/gcc/armv7a-cros-linux-gnueabihf/4.9.x/include/g++-v4 --mandir=/usr/share/gcc-data/armv7a-cros-linux-gnueabihf/4.9.x/man --infodir=/usr/share/gcc-data/armv7a-cros-linux-gnueabihf/4.9.x/info --with-python-dir=/share/gcc-data/armv7a-cros-linux-gnueabihf/4.9.x/python --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=armv7a-cros-linux-gnueabihf --enable-languages=c,c++ --enable-__cxa_atexit --disable-canonical-system-headers --enable-checking=release --enable-linker-build-id --with-bugurl=http://code.google.com/p/chromium-os/issues/entry --with-pkgversion=4.9.2_cos_gg_4.9.2-r278-ac6128e0a17a52f011797f33ac3e7d6273a9368d_4.9.2-r278 --disable-libatomic --disable-multilib --enable-libgomp --disable-libcilkrts --disable-libitm --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libsanitizer --enable-frame-pointer --with-arch=armv7-a --disable-esp --with-float=hard --with-mode=thumb --enable-poison-system-directories --with-sysroot=/usr/armv7a-cros-linux-gnueabihf";
static const char thread_model[] = "posix";

static const struct {
  const char *name, *value;
} configure_default_options[] = { { "arch", "armv7-a" }, { "float", "hard" }, { "mode", "thumb" }, { "tls", "gnu" } };
