2015-03-13 18:52:59 +00:00
|
|
|
/* Copyright (c) 2008-2015, Avian Contributors
|
2008-06-25 20:53:48 +00:00
|
|
|
|
|
|
|
Permission to use, copy, modify, and/or distribute this software
|
|
|
|
for any purpose with or without fee is hereby granted, provided
|
|
|
|
that the above copyright notice and this permission notice appear
|
|
|
|
in all copies.
|
|
|
|
|
|
|
|
There is NO WARRANTY for this software. See license.txt for
|
|
|
|
details. */
|
|
|
|
|
2014-04-09 20:34:22 +00:00
|
|
|
#include <stdlib.h>
|
2008-03-31 03:43:43 +00:00
|
|
|
|
2014-04-09 20:34:22 +00:00
|
|
|
#include "avian/common.h"
|
2009-08-27 00:26:44 +00:00
|
|
|
|
2008-10-28 21:40:50 +00:00
|
|
|
// since we aren't linking against libstdc++, we must implement this
|
|
|
|
// ourselves:
|
2014-07-11 15:50:18 +00:00
|
|
|
extern "C" void __cxa_pure_virtual(void)
|
|
|
|
{
|
|
|
|
abort();
|
|
|
|
}
|
2008-03-31 03:43:43 +00:00
|
|
|
|
2009-10-27 15:41:00 +00:00
|
|
|
#ifdef BOOT_IMAGE
|
|
|
|
|
2014-07-11 15:50:18 +00:00
|
|
|
#if (!defined __x86_64__) && ((defined __MINGW32__) || (defined _MSC_VER))
|
|
|
|
#define BOOTIMAGE_SYMBOL(x) binary_bootimage_bin_##x
|
|
|
|
#define CODEIMAGE_SYMBOL(x) binary_codeimage_bin_##x
|
2009-10-27 15:41:00 +00:00
|
|
|
#else
|
2014-07-11 15:50:18 +00:00
|
|
|
#define BOOTIMAGE_SYMBOL(x) _binary_bootimage_bin_##x
|
|
|
|
#define CODEIMAGE_SYMBOL(x) _binary_codeimage_bin_##x
|
2009-10-27 15:41:00 +00:00
|
|
|
#endif
|
|
|
|
|
2008-11-29 23:08:14 +00:00
|
|
|
extern "C" {
|
2014-07-11 15:50:18 +00:00
|
|
|
extern const uint8_t BOOTIMAGE_SYMBOL(start)[];
|
|
|
|
extern const uint8_t BOOTIMAGE_SYMBOL(end)[];
|
2008-11-29 23:08:14 +00:00
|
|
|
|
2015-03-16 21:32:50 +00:00
|
|
|
AVIAN_EXPORT const uint8_t* bootimageBin(size_t* size)
|
2014-07-11 15:50:18 +00:00
|
|
|
{
|
|
|
|
*size = BOOTIMAGE_SYMBOL(end) - BOOTIMAGE_SYMBOL(start);
|
|
|
|
return BOOTIMAGE_SYMBOL(start);
|
|
|
|
}
|
2011-09-20 22:30:30 +00:00
|
|
|
|
2014-07-11 15:50:18 +00:00
|
|
|
extern const uint8_t CODEIMAGE_SYMBOL(start)[];
|
|
|
|
extern const uint8_t CODEIMAGE_SYMBOL(end)[];
|
2008-11-29 23:08:14 +00:00
|
|
|
|
2015-03-16 21:32:50 +00:00
|
|
|
AVIAN_EXPORT const uint8_t* codeimageBin(size_t* size)
|
2014-07-11 15:50:18 +00:00
|
|
|
{
|
|
|
|
*size = CODEIMAGE_SYMBOL(end) - CODEIMAGE_SYMBOL(start);
|
|
|
|
return CODEIMAGE_SYMBOL(start);
|
|
|
|
}
|
2008-11-29 23:08:14 +00:00
|
|
|
}
|
|
|
|
|
2010-11-05 19:18:28 +00:00
|
|
|
#undef SYMBOL
|
|
|
|
|
2014-07-11 15:50:18 +00:00
|
|
|
#endif // BOOT_IMAGE
|
2008-11-29 23:08:14 +00:00
|
|
|
|
|
|
|
#ifdef BOOT_CLASSPATH
|
|
|
|
|
2014-07-11 15:50:18 +00:00
|
|
|
#if (!defined __x86_64__) && ((defined __MINGW32__) || (defined _MSC_VER))
|
|
|
|
#define SYMBOL(x) binary_classpath_jar_##x
|
2008-03-31 03:43:43 +00:00
|
|
|
#else
|
2014-07-11 15:50:18 +00:00
|
|
|
#define SYMBOL(x) _binary_classpath_jar_##x
|
2008-03-31 03:43:43 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
extern "C" {
|
2014-07-11 15:50:18 +00:00
|
|
|
extern const uint8_t SYMBOL(start)[];
|
|
|
|
extern const uint8_t SYMBOL(end)[];
|
2008-03-31 03:43:43 +00:00
|
|
|
|
2015-03-16 21:32:50 +00:00
|
|
|
AVIAN_EXPORT const uint8_t* classpathJar(size_t* size)
|
2014-07-11 15:50:18 +00:00
|
|
|
{
|
|
|
|
*size = SYMBOL(end) - SYMBOL(start);
|
|
|
|
return SYMBOL(start);
|
|
|
|
}
|
2008-03-31 03:43:43 +00:00
|
|
|
}
|
2008-11-29 23:08:14 +00:00
|
|
|
|
2010-11-05 19:18:28 +00:00
|
|
|
#undef SYMBOL
|
|
|
|
|
2014-07-11 15:50:18 +00:00
|
|
|
#endif // BOOT_CLASSPATH
|