Hi everyone,
As you well know, we are working on the port to OS X. As you're probably
also aware, we find this project more challenging than expected. I would
like to pick your brains on multiple topics to see if some relevant
information can come from it.
First, here's the status of our project. We compile and link since a long
time ago. We are left with runtime related errors that we address one after
the other. Most of the problems we have are related to the assembly used.
For that part, we based our code on the AIX version of poplog. Provided the
nature of some assembly errors that were found in the assembly, our level of
trust of the AIX port is highly limited. This obviously makes the project
way more difficult. So, the first question is the following:
- How stable is the AIX version of poplog? To your knowledge, is this
version used in production anywhere, or was this a preliminary port that was
never fully tested?
As it stands, we experience many problems with r12 (the stack-pointer). We
fixed the issues related to brk and sbrk. We ran into some assembly level
bugs that we fixed. Some bugs were fixed generically (in gen_proc.s) and
some others required a post-cross-compilation changes since they could not
get fixed with a generic change (the generic change generated some troubles
in other areas). That increased our suspicions towards the quality of the
assembly being generated.
As we go though these changes, we can't see the forrest from the tree. We're
always fixing the most immediate trouble without any way of knowing what is
behind. That is a serious problem for us and our lack of tools is a surprise
to me for such a mature product like poplog which was ported to so many
other platforms.
My expectations would have called for a port utility that would test for all
the different aspect of a port prior to even trying to run newpop11. For
example, a pop11 file that would manipulate the heap, stack allocations,
list creations and list referrals and else with significant feedback at each
step to validate the purity of the assembly that was generated by the port.
This would work a bit the same way as when one writes a java virtual
machine. One does not test a java virtual machine just by running java
applets and hoping for the best, but one can run a java virtual machine
validator that runs all aspects of a virtual machine while validating the
result of each type of operations. As it stands, we're stuck at running
newpop11 and hoping for the best, and that is not the most productive way of
performing a port. We need a port validation utility. So, here's my second
question to the group.
- Is there a port validation tool that allows us to check for the purity of
the assembly being generated by the cross-compilation? If not, we'll need to
write one. Anyone could give us an idea on everything that we need to check
for all the assembly that can be generated to be checked successfully?
Already, through a small pop11 file that we wrote and ran we saw some
problems in regards to assignation of values to variables (I told you we had
some trouble with the stack-pointer r12), but such a tool would be of
significant use to ensure the purity of ALL the assembly generated. Then,
running newpop11 would become almost trivial.
I appreciate your feedback. I am sorry about all the troubles we're having
with that port (and all the difficult questions we ask), but we're not much
of quiters here. This is a difficult project that we will complete whatever
the cost.
Philippe Roy
Manager
Deltagreen USA Inc.
|