#512: Porting parrot 1.0.0 to NetBSD/macppc
---------------------+------------------------------------------------------
 Reporter:  heidnes  |        Type:  bug   
   Status:  new      |    Priority:  normal
Milestone:  1.1      |   Component:  core  
  Version:  1.0.0    |    Severity:  medium
 Keywords:           |        Lang:        
    Patch:           |    Platform:  netbsd
---------------------+------------------------------------------------------
 Hi,

 I decided to look at how difficult it would be to get the
 recently released parrot 1.0.0 going on NetBSD/macppc 4.0.

 The answer turned out to be "not very". :)  Cheers for good
 portability!  (But there's another bug report on the way
 about a non-portable use of the == operator to the "test"
 program...)

 I had to make a few minor adjustments to the code, due to the
 following differences between the Linux/ppc and NetBSD/macppc
 (or generally NetBSD/powerpc) targets:

 1) The assembler on NetBSD/macppc insists that powerpc registers
    must be named with a % prefix.  I have verified that Linux/ppc
    accepts that syntax as well.

 2) There is some strange difference going on with respect to
    whether externally visible symbols in assembly should have
    a leading underscore or not, apparently.  This affects the
    minimal assembly fragment for saving the non-volatile
    registers.  Since the assembly code is apparently passed
    through the preprocessor, a simple #ifdef cured this problem.

 3) A couple of ELF-related PPC preprocessor symbols are named
    differently in NetBSD.  I'm not entirely sure where the
    correct place is for that workaround -- feel free to relocate
    to a more appropriate spot.

 I've attached my local changes to deal with these three issues.
 With these in place, my build completed, and a "make test"
 succeeded with

 All tests successful, 17 tests and 580 subtests skipped.
 Files=398, Tests=11569, 584 wallclock secs (429.43 cusr + 106.05 csys =
 535.48 CPU)

 Your already tracked issue for OpenBSD at

 http://rt.perl.org/rt3//Public/Bug/Display.html?id=40959

 should also be fixed by this particular bugfix.


 I'll also note that during the build a number of warnings are
 emitted, similar to this:

 src/ops/core_ops_switch.c
 src/ops/core.ops: In function 'switch_core':
 src/ops/core.ops:165: warning: cast increases required alignment of target
 type
 src/ops/core.ops:191: warning: cast increases required alignment of target
 type
 src/ops/core.ops:204: warning: cast increases required alignment of target
 type
 src/ops/core.ops:212: warning: cast increases required alignment of target
 type
 src/ops/core.ops:236: warning: cast increases required alignment of target
 type

 (the list goes on, also for several other files...)  The first
 one of these appears to be (from src/ops/core_ops_switch.c:

 case 8: /* load_bytecode_s */ {
 #line 165 "src/ops/core.ops"
     Parrot_load_bytecode(interp, (*(STRING **)OP_AS_OFFS(1)));


 ---
 osname= netbsd
 osvers= 4.0
 arch=   powerpc-netbsd-thread-multi
 cc=     cc
 ---
 Flags:
     category=core
     severity=medium
     ack=no
 ---
 Summary of my parrot 1.0.0 (r0) configuration:
   configdate='Mon Mar 23 17:27:34 2009 GMT'
   Platform:
     osname=netbsd, archname=powerpc-netbsd-thread-multi
     jitcapable=1, jitarchname=ppc-netbsd,
     jitosname=NETBSD, jitcpuarch=ppc
     execcapable=1
     perl=perl
   Compiler:
     cc='cc', ccflags=' -pipe -pthread -DHASATTRIBUTE_CONST
 -DHASATTRIBUTE_DEPRECATED  -DHASATTRIBUTE_MALLOC  -DHASATTRIBUTE_NONNULL
 -DHASATTRIBUTE_NORETURN  -DHASATTRIBUTE_PURE  -DHASATTRIBUTE_UNUSED
 -DHASATTRIBUTE_WARN_UNUSED_RESULT  -falign-functions=16
 -fvisibility=hidden -funit-at-a-time -W -Wall -Waggregate-return -Wcast-
 align -Wcast-qual -Wchar-subscripts -Wcomment -Wdisabled-optimization
 -Wendif-labels -Wextra -Wformat -Wformat-extra-args -Wformat-nonliteral
 -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline
 -Winvalid-pch -Wmissing-braces -Wmissing-field-initializers -Wno-missing-
 format-attribute -Wmissing-include-dirs -Wpacked -Wparentheses -Wpointer-
 arith -Wreturn-type -Wsequence-point -Wno-shadow -Wsign-compare -Wstrict-
 aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs -Wundef
 -Wunknown-pragmas -Wno-unused -Wvariadic-macros -Wwrite-strings -Wbad-
 function-cast -Wc++-compat -Wdeclaration-after-statement -Wimplicit-
 function-declaration -Wimplicit-int -Wmain -Wmissing-declarations
 -Wmissing-prototypes -Wnested-externs -Wnonnull -DHAS_GETTEXT',
   Linker and Libraries:
     ld='cc', ldflags='-Wl,-R/usr/pkg/lib ',
     cc_ldflags='',
     libs='-lm -lcrypt -lpthread -lintl'
   Dynamic Linking:
     share_ext='.so', ld_share_flags='-Wl,-R/usr/pkg/lib --whole-archive
 -shared ',
     load_ext='.so', ld_load_flags='-Wl,-R/usr/pkg/lib --whole-archive
 -shared '
   Types:
     iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
     ptrsize=4, ptr_alignment=1 byteorder=4321,
     nv=double, numvalsize=8, doublesize=8, longdoublesize=8

 ---
 Environment:
     HOME =/usr/users/he
     LANG  (unset)
     LANGUAGE  (unset)
     LD_LIBRARY_PATH  (unset)
     LOGDIR  (unset)
     PATH
 
=/usr/users/he/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/games:/usr/local/bin:/usr/local/sbin
     SHELL =/bin/csh

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/512>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to