Thanks!

On x86_64 without -m32, this becomes a problem (as it would on ia64,
alpha, or other Debian architectures I might wind up porting this
to).  I've heard from others that 64 bit targets aren't really
interesting to the V8 team, so I assume I'll keep keeping some fixes
out of tree for now, but in cases where I can push patches in upstream
that won't get in the way, I'd like to.

I have a patch in my tree to make doing this build easy while still
letting me test the 32bit build.  Debian and Ubuntu have a tool called
'linux32' which will have the system report that it's running on ia32
rather than x86_64.  With the following patch, using "linux32 scons"
on amd64 produces the build the way you guys are used to and "scons"
attempts to build it for x86_64.  Note that I haven't tested this on
arm as I don't have that environment setup.  I don't remember off hand
if arm-linux-gcc accepts -m32.  If not, I would need to tweak this
further.  I also think the hack to tools/utils.py is probably wrong.
platform.machine() seems to always return the value we want, except
for i[3-7]86 where we want ia32.  I suspect it should just test for
that and otherwise return whatever was handed to it.  Distros and
whatnot would usually expect to use linux32 and a 32bit chroot to do
ia32 builds.

Patch follows:

Index: tools/utils.py
===================================================================
--- tools/utils.py      (revision 1129)
+++ tools/utils.py      (working copy)
@@ -63,6 +63,8 @@
   id = platform.machine()
   if id.startswith('arm'):
     return 'arm'
+  if id.startswith('x86_64'):
+    return 'x86_64'
   elif (not id) or (not re.match('(x|i[3-6])86', id) is None):
     return 'ia32'
   else:
Index: SConstruct
===================================================================
--- SConstruct  (revision 1129)
+++ SConstruct  (working copy)
@@ -57,10 +57,10 @@
     'os:freebsd': {
       'LIBS':         ['execinfo']
     },
-    'wordsize:64': {
+    'wordsize:32': {
       'CCFLAGS':      ['-m32'],
       'LINKFLAGS':    ['-m32']
-    }
+    },
   },
   'msvc': {
     'all': {
@@ -175,7 +175,7 @@
     'all': {
       'LIBPATH': [abspath('.')]
     },
-    'wordsize:64': {
+    'wordsize:32': {
       'CCFLAGS':      ['-m32'],
       'LINKFLAGS':    ['-m32']
     },
@@ -204,7 +204,7 @@
     'os:freebsd': {
       'LIBS':         ['execinfo']
     },
-    'wordsize:64': {
+    'wordsize:32': {
       'CCFLAGS':      ['-m32'],
       'LINKFLAGS':    ['-m32']
     },
@@ -298,7 +298,7 @@
     'help': 'the os to build for'
   },
   'arch': {
-    'values':['arm', 'ia32'],
+    'values':['arm', 'ia32', 'x86_64'],
     'default': ARCH_GUESS,
     'help': 'the architecture to build for'
   },


On Jan 22, 9:03 am, Mads Sig Ager <[email protected]> wrote:
> Thanks for the patch!   Using %p is the right thing here.  It has been
> committed in V8 bleeding_edge revision 1128.  :-)
>
> Do you have a build setup where this is a problem?  If you do, we
> would be interested in more details of the setup so we can test
> against it.
>
> Cheers,    -- Mads
>
> On Wed, Jan 21, 2009 at 7:10 PM, Jeff Bailey <[email protected]> wrote:
>
> > Hi!  There seem to be a number of places that assume that a pointer is
> > the same size as an int (or an ILP32 system in general).  Will fixes
> > like this be accepted?
>
> > 2009-01-20  Jeff Bailey <[email protected]>
>
> >        * src/checks.h: Use %p modifier for displaying pointers.
>
> > Index: src/checks.h
> > ===================================================================
> > --- src/checks.h        (revision 1112)
> > +++ src/checks.h        (working copy)
> > @@ -136,9 +136,9 @@
> >                                      void* value) {
> >   if (expected != value) {
> >     V8_Fatal(file, line,
> > -             "CHECK_EQ(%s, %s) failed\n#   Expected: %i\n#   Found:
> > %i",
> > +             "CHECK_EQ(%s, %s) failed\n#   Expected: %p\n#   Found:
> > %p",
> >              expected_source, value_source,
> > -             reinterpret_cast<int>(expected), reinterpret_cast<int>
> > (value));
> > +             expected, value);
> >   }
> >  }
>
> > @@ -150,8 +150,8 @@
> >                                         const char* value_source,
> >                                         void* value) {
> >   if (expected == value) {
> > -    V8_Fatal(file, line, "CHECK_NE(%s, %s) failed\n#   Value: %i",
> > -             expected_source, value_source, reinterpret_cast<int>
> > (value));
> > +    V8_Fatal(file, line, "CHECK_NE(%s, %s) failed\n#   Value: %p",
> > +             expected_source, value_source, value);
> >   }
> >  }
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to