Author: [email protected]
Date: Mon Mar 23 05:37:53 2009
New Revision: 1574
Modified:
branches/bleeding_edge/SConstruct
branches/bleeding_edge/src/SConscript
branches/bleeding_edge/src/execution.cc
branches/bleeding_edge/src/platform-linux.cc
branches/bleeding_edge/src/runtime.cc
Log:
Reapply portability fixes, this time without 64 bit system bug.
Review URL: http://codereview.chromium.org/52010
Modified: branches/bleeding_edge/SConstruct
==============================================================================
--- branches/bleeding_edge/SConstruct (original)
+++ branches/bleeding_edge/SConstruct Mon Mar 23 05:37:53 2009
@@ -35,6 +35,40 @@
sys.path.append(join(root_dir, 'tools'))
import js2c, utils
+# ANDROID_TOP is the top of the Android checkout, fetched from the
environment
+# variable 'TOP'. You will also need to set the CXX, CC, AR and RANLIB
+# environment variables to the cross-compiling tools.
+ANDROID_TOP = os.environ.get('TOP')
+if ANDROID_TOP is None:
+ ANDROID_TOP=""
+
+ANDROID_FLAGS = ['-march=armv5te',
+ '-mtune=xscale',
+ '-msoft-float',
+ '-fpic',
+ '-mthumb-interwork',
+ '-funwind-tables',
+ '-fstack-protector',
+ '-fno-short-enums',
+ '-fmessage-length=0',
+ '-finline-functions',
+ '-fno-inline-functions-called-once',
+ '-fgcse-after-reload',
+ '-frerun-cse-after-loop',
+ '-frename-registers',
+ '-fomit-frame-pointer',
+ '-fno-strict-aliasing',
+ '-finline-limit=64',
+ '-MD']
+
+ANDROID_INCLUDES = [ANDROID_TOP + '/bionic/libc/arch-arm/include',
+ ANDROID_TOP + '/bionic/libc/include',
+ ANDROID_TOP + '/bionic/libstdc++/include',
+ ANDROID_TOP + '/bionic/libc/kernel/common',
+ ANDROID_TOP + '/bionic/libc/kernel/arch-arm',
+ ANDROID_TOP + '/bionic/libm/include',
+ ANDROID_TOP + '/bionic/libm/include/arch/arm',
+ ANDROID_TOP + '/bionic/libthread_db/include']
LIBRARY_FLAGS = {
'all': {
@@ -50,7 +84,11 @@
'CPPDEFINES': ['ENABLE_DISASSEMBLER', 'DEBUG']
},
'mode:release': {
- 'CCFLAGS':
['-O3', '-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections']
+ 'CCFLAGS': ['-O3', '-fomit-frame-pointer', '-fdata-sections',
+ '-ffunction-sections'],
+ 'os:android': {
+ 'CPPDEFINES': ['SK_RELEASE', 'NDEBUG']
+ }
},
'os:linux': {
'CCFLAGS': ['-ansi'],
@@ -65,6 +103,14 @@
'CCFLAGS': ['-DWIN32'],
'CXXFLAGS': ['-DWIN32'],
},
+ 'os:android': {
+ 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__',
+ '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'],
+ 'CCFLAGS': ANDROID_FLAGS,
+ 'WARNINGFLAGS': ['-Wall', '-Wno-unused', '-Werror=return-type',
+ '-Wstrict-aliasing=2'],
+ 'CPPPATH': ANDROID_INCLUDES,
+ },
'wordsize:64': {
'CCFLAGS': ['-m32'],
'LINKFLAGS': ['-m32']
@@ -114,14 +160,23 @@
'gcc': {
'all': {
'CXXFLAGS': [], #['-fvisibility=hidden'],
- 'WARNINGFLAGS': ['-pedantic', '-Wall', '-Werror', '-W',
+ 'WARNINGFLAGS': ['-Wall', '-Werror', '-W',
'-Wno-unused-parameter']
},
'arch:arm': {
'CPPDEFINES': ['ARM']
},
+ 'arch:android': {
+ 'CPPDEFINES': ['ARM']
+ },
'os:win32': {
- 'WARNINGFLAGS': ['-Wno-long-long']
+ 'WARNINGFLAGS': ['-pedantic', '-Wno-long-long']
+ },
+ 'os:linux': {
+ 'WARNINGFLAGS': ['-pedantic']
+ },
+ 'os:macos': {
+ 'WARNINGFLAGS': ['-pedantic']
},
'disassembler:on': {
'CPPDEFINES': ['ENABLE_DISASSEMBLER']
@@ -174,7 +229,7 @@
DTOA_EXTRA_FLAGS = {
'gcc': {
'all': {
- 'WARNINGFLAGS': ['-Werror']
+ 'WARNINGFLAGS': ['-Werror', '-Wno-uninitialized']
}
},
'msvc': {
@@ -230,7 +285,8 @@
},
'gcc': {
'all': {
- 'LIBPATH': ['.']
+ 'LIBPATH': ['.'],
+ 'CCFLAGS': ['-fno-rtti', '-fno-exceptions']
},
'os:linux': {
'LIBS': ['pthread', 'rt'],
@@ -244,6 +300,27 @@
'os:win32': {
'LIBS': ['winmm', 'ws2_32']
},
+ 'os:android': {
+ 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__',
+ '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__'],
+ 'CCFLAGS': ANDROID_FLAGS,
+ 'CPPPATH': ANDROID_INCLUDES,
+ 'LIBPATH': [ANDROID_TOP + '/out/target/product/generic/obj/lib'],
+ 'LINKFLAGS': ['-nostdlib',
+ '-Bdynamic',
+ '-Wl,-T,' + ANDROID_TOP + '/build/core/armelf.x',
+ '-Wl,-dynamic-linker,/system/bin/linker',
+ '-Wl,--gc-sections',
+ '-Wl,-z,nocopyreloc',
+ '-Wl,-rpath-link=' + ANDROID_TOP
+ '/out/target/product/generic/obj/lib',
+ ANDROID_TOP
+ '/out/target/product/generic/obj/lib/crtbegin_dynamic.o',
+ ANDROID_TOP
+
'/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a',
+ ANDROID_TOP
+ '/out/target/product/generic/obj/lib/crtend_android.o'],
+ 'LIBS': ['c', 'stdc++', 'm'],
+ 'mode:release': {
+ 'CPPDEFINES': ['SK_RELEASE', 'NDEBUG']
+ }
+ },
'wordsize:64': {
'CCFLAGS': ['-m32'],
'LINKFLAGS': ['-m32']
@@ -355,7 +432,7 @@
'help': 'the toolchain to use'
},
'os': {
- 'values': ['freebsd', 'linux', 'macos', 'win32'],
+ 'values': ['freebsd', 'linux', 'macos', 'win32', 'android'],
'default': OS_GUESS,
'help': 'the os to build for'
},
@@ -510,6 +587,8 @@
options[key] = prefix + value
def ConfigureObject(self, env, input, **kw):
+ if (kw.has_key('CPPPATH') and env.has_key('CPPPATH')):
+ kw['CPPPATH'] += env['CPPPATH']
if self.options['library'] == 'static':
return env.StaticObject(input, **kw)
else:
Modified: branches/bleeding_edge/src/SConscript
==============================================================================
--- branches/bleeding_edge/src/SConscript (original)
+++ branches/bleeding_edge/src/SConscript Mon Mar 23 05:37:53 2009
@@ -68,6 +68,7 @@
'simulator:arm': ['simulator-arm.cc'],
'os:freebsd': ['platform-freebsd.cc'],
'os:linux': ['platform-linux.cc'],
+ 'os:android': ['platform-linux.cc'],
'os:macos': ['platform-macos.cc'],
'os:nullos': ['platform-nullos.cc'],
'os:win32': ['platform-win32.cc'],
Modified: branches/bleeding_edge/src/execution.cc
==============================================================================
--- branches/bleeding_edge/src/execution.cc (original)
+++ branches/bleeding_edge/src/execution.cc Mon Mar 23 05:37:53 2009
@@ -482,7 +482,8 @@
bool* exc) {
if (data->property_list()->IsUndefined() &&
!data->constructor()->IsUndefined()) {
- Object* result;
+ // Initialization to make gcc happy.
+ Object* result = NULL;
{
HandleScope scope;
Handle<FunctionTemplateInfo> cons_template =
Modified: branches/bleeding_edge/src/platform-linux.cc
==============================================================================
--- branches/bleeding_edge/src/platform-linux.cc (original)
+++ branches/bleeding_edge/src/platform-linux.cc Mon Mar 23 05:37:53 2009
@@ -44,7 +44,9 @@
#include <sys/stat.h> // open
#include <fcntl.h> // open
#include <unistd.h> // sysconf
+#ifdef __GLIBC__
#include <execinfo.h> // backtrace, backtrace_symbols
+#endif // def __GLIBC__
#include <strings.h> // index
#include <errno.h>
#include <stdarg.h>
@@ -361,6 +363,8 @@
int OS::StackWalk(OS::StackFrame* frames, int frames_size) {
+ // backtrace is a glibc extension.
+#ifdef __GLIBC__
void** addresses = NewArray<void*>(frames_size);
int frames_count = backtrace(addresses, frames_size);
@@ -387,6 +391,9 @@
free(symbols);
return frames_count;
+#else // ndef __GLIBC__
+ return 0;
+#endif // ndef __GLIBC__
}
@@ -814,6 +821,8 @@
static Sampler* active_sampler_ = NULL;
static void ProfilerSignalHandler(int signal, siginfo_t* info, void*
context) {
+ // Ucontext is a glibc extension - no profiling on Android at the moment.
+#ifdef __GLIBC__
USE(info);
if (signal != SIGPROF) return;
if (active_sampler_ == NULL) return;
@@ -840,6 +849,7 @@
sample.state = Logger::state();
active_sampler_->Tick(&sample);
+#endif
}
Modified: branches/bleeding_edge/src/runtime.cc
==============================================================================
--- branches/bleeding_edge/src/runtime.cc (original)
+++ branches/bleeding_edge/src/runtime.cc Mon Mar 23 05:37:53 2009
@@ -1723,7 +1723,7 @@
// Number of parts added by compiled replacement plus preceeding string
// and possibly suffix after last match.
const int parts_added_per_loop = compiled_replacement.parts() + 2;
- bool matched;
+ bool matched = true;
do {
ASSERT(last_match_info_handle->HasFastElements());
// Increase the capacity of the builder before entering local
handle-scope,
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---