Closed Bug 18692 Opened 25 years ago Closed 25 years ago

Fix xptcall code

Categories

(Core :: XPConnect, defect, P1)

Other
AIX
defect

Tracking

()

RESOLVED FIXED

People

(Reporter: jdunn, Assigned: jdunn)

References

Details

XPCInvoke seems to be working, but still having problems with
XPCTest (it coredumps).  This is needed to get the browser running since we
now have dependencies on this.
Blocks: 18688
Status: NEW → ASSIGNED
Severity: normal → critical
Priority: P3 → P1
Target Milestone: M12
xptcall is now required to run, so currently the AIX build coredumps
on startup.  Originally we I had used the MAX PPC code (cpp & assembler)
but unfortunately AIX does not support inline assembly.  I am currently
working with IBM on coming up with another solution.
jim,  do you expect this to happen in the next few days?
Target Milestone: M12
pushing out...
I used the following URL to dig around and find out enough about
the registers and stack to finally fix the XPT code.

http://www.austin.ibm.com/doc_link/en_US/a_doc_lib/aixassem/alangref/linkage_con
vent.htm

Index: xptcstubs_asm_ppc_aix.s
===================================================================
RCS file:
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_aix.s,v
retrieving revision 1.3
diff -r1.3 xptcstubs_asm_ppc_aix.s
63a64,66
>  	mr	r12,r3		    # Move methodIndex into r12 for LATER
>  	lwz	r3,104(sp)	    # Get the 'original' r3
>
91,92c94,95
< #	mr	r4,r12		# methodIndex selector
< 	addi	r5,sp,232	# pointer to callers args area, beyond r3-r10
mapped range
---
> 	mr	r4,r12		# methodIndex selector (it is now LATER)
> 	addi	r5,sp,312	# pointer to callers args area, beyond r3-r10
mapped range
Index: xptcstubs_ppc_aix.cpp
===================================================================
RCS file:
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_aix.cpp,v
retrieving revision 1.4
diff -r1.4 xptcstubs_ppc_aix.cpp
44c44
< #define PARAM_GPR_COUNT                 7
---
> #define PARAM_GPR_COUNT         7
196c196
< extern "C" int SharedStub(void *, int);
---
> extern "C" int SharedStub(int);
201c201
<     return SharedStub(this, n);      \
---
>     return SharedStub(n);	     \
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Checked in code (it is in M12)
You need to log in before you can comment on or make changes to this bug.