Closed Bug 404256 Opened 12 years ago Closed 12 years ago

OpenBSD xptcall files for trunk

Categories

(Core :: XPCOM, defect, P4)

All
OpenBSD
defect

Tracking

()

RESOLVED FIXED
mozilla1.9beta3

People

(Reporter: martynas, Assigned: martynas)

Details

Attachments

(1 file, 2 obsolete files)

Good day,

Attached are updated xptcall files for the new API for trunk.  I don't have all of the platforms, so they are still being tested.

I'll reply when the testing is finished.
Flags: blocking1.9?
martynas - why do you want this to block the Gecko1.9 release?
Because Gecko1.8 already supports OpenBSD (files needed to be adjusted for the new API).

It's a follow-up from bug #236599.
Flags: blocking1.9? → blocking1.9+
Priority: -- → P4
Contains a few fixes.  Tested on alpha, amd64, arm, macppc and sparc64.
Attachment #289234 - Attachment is obsolete: true
Attachment #290403 - Flags: review?(timeless)
Comment on attachment 290403 [details] [diff] [review]
OpenBSD xptcall files for trunk, v2

Searching for someone who cares.
Attachment #290403 - Flags: review?(timeless) → review?(benjamin)
Comment on attachment 290403 [details] [diff] [review]
OpenBSD xptcall files for trunk, v2

can you explain why you force this:
+CXXFLAGS	+= -O2

could you possibly fix the C++ files to match the declared indentation (2 or 4 spaces), and also make the assembly reasonably aligned (some limited examples follow)

this doesn't seem properly aligned:
+    "ldr        ip, [r1, r2]    \n\t"   /* get method adress from vtable        */
...
+    "cmp	r4, #12		\n\t"	/* more than 3 arguments???		*/
this i assume is ok'ish:
+    "ldmgtia	sp!, {r1, r2, r3}\n\t"	/* yes: load arguments for r1-r3	*/

+        lwz     r4,4(r30)			# load GP regs with method parameters
+	lwz     r5,8(r30)   

+XPTC_InvokeByIndex:
+        save    %sp,-(64 + 16),%sp   ! room for the register window and
+                                    ! struct pointer, rounded up to 0 % 16
...
+	sll     %o0,2,%l0           ! number of bytes
+        sub     %sp,%l0,%sp         ! create the additional stack space

...
+	add     %l0,%i0,%i0         ! adjust this
+        ld      [%l1 + 4],%l0       ! target address

+        case nsXPTType::T_U8     : *((uint32*)  l_d) = l_s->val.u8;          break;
+        case nsXPTType::T_U16    : *((uint32*) l_d) = l_s->val.u16;         break;
...
+        case nsXPTType::T_CHAR   : *((uint32*)   l_d) = l_s->val.c;           break;


+ * This routine makes assumptions about the vtable layout of the c++ compiler. It's implemented
+ * for arm-linux GNU g++ >= 2.8.1 (including egcs and gcc-2.95.[1-3])!

can you convert /equate this into a #if to force failure outside this range?

+/* solaris defines __sparc for workshop compilers and 
+   linux defines __sparc__ */

i don't understand this. solaris and linux (better capitalized Solaris/Linux) aren't things and don't really relate to compilers. If this means Sun Workshop (now Sun Studio), and GCC, then can we change this to indicate that? What happens if I use Studio for Linux or GCC for Solaris?

+// caller.  The rest of the parameters are passed in the callers stack

caller's

+        dispatchParams = new nsXPTCMiniVariant[paramCount];
+    else
+        dispatchParams = paramBuffer;
+    NS_ASSERTION(dispatchParams,"no place for params");
+
+    PRUint64* ap = args;

this instance isn't checking dispatchparams for alloc failure, some do, please make sure they all do. i'm very sorry that we've only recently tried to fix this. (actually, there are at least 2 that don't, and i saw at least one that did)
Attachment #290403 - Flags: review?(benjamin) → review+
So what's keeping this from landing?  Does it just need to be checked in?
Well, shouldn't timeless comments be addressed? I think those are valid remarks even if he wasn't the reviewer.
Incorporated from comment #5.
Attachment #290403 - Attachment is obsolete: true
Attachment #293823 - Flags: review?(benjamin)
Attachment #293823 - Flags: review?(benjamin) → review+
Attachment #293823 - Flags: approval1.9?
Whiteboard: [checkin needed]
Attachment #293823 - Flags: approval1.9? → approval1.9+
Note: checkin-needed is a keyword now, instead of a magical status whiteboard string.
Keywords: checkin-needed
Whiteboard: [checkin needed]
Checking in xpcom/reflect/xptcall/src/md/unix/Makefile.in;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in,v  <--  Makefile.in
new revision: 1.97; previous revision: 1.96
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_alpha_openbsd.cpp,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_alpha_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_alpha_openbsd.cpp,v  <--  xptcinvoke_alpha_openbsd.cpp
initial revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_openbsd.cpp,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_amd64_openbsd.cpp,v  <--  xptcinvoke_amd64_openbsd.cpp
initial revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm_openbsd.cpp,v  <--  xptcinvoke_arm_openbsd.cpp
new revision: 1.2; previous revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_openbsd.s;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_openbsd.s,v  <--  xptcinvoke_asm_ppc_openbsd.s
new revision: 1.2; previous revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_openbsd.s;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc64_openbsd.s,v  <--  xptcinvoke_asm_sparc64_openbsd.s
new revision: 1.2; previous revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc_openbsd.s,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc_openbsd.s;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_sparc_openbsd.s,v  <--  xptcinvoke_asm_sparc_openbsd.s
initial revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc_openbsd.cpp,v  <--  xptcinvoke_ppc_openbsd.cpp
new revision: 1.2; previous revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc64_openbsd.cpp,v  <--  xptcinvoke_sparc64_openbsd.cpp
new revision: 1.2; previous revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc_openbsd.cpp,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_sparc_openbsd.cpp,v  <--  xptcinvoke_sparc_openbsd.cpp
initial revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_alpha_openbsd.cpp,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_alpha_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_alpha_openbsd.cpp,v  <--  xptcstubs_alpha_openbsd.cpp
initial revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_openbsd.cpp,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_amd64_openbsd.cpp,v  <--  xptcstubs_amd64_openbsd.cpp
initial revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm_openbsd.cpp,v  <--  xptcstubs_arm_openbsd.cpp
new revision: 1.2; previous revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_openbsd.s;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_openbsd.s,v  <--  xptcstubs_asm_ppc_openbsd.s
new revision: 1.2; previous revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc64_openbsd.s,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc64_openbsd.s;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc64_openbsd.s,v  <--  xptcstubs_asm_sparc64_openbsd.s
initial revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc_openbsd.s,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc_openbsd.s;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_sparc_openbsd.s,v  <--  xptcstubs_asm_sparc_openbsd.s
initial revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_openbsd.cpp,v  <--  xptcstubs_ppc_openbsd.cpp
new revision: 1.2; previous revision: 1.1
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_openbsd.cpp,v  <--  xptcstubs_sparc64_openbsd.cpp
new revision: 1.2; previous revision: 1.1
done
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc_openbsd.cpp,v
done
Checking in xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc_openbsd.cpp;
/cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc_openbsd.cpp,v  <--  xptcstubs_sparc_openbsd.cpp
initial revision: 1.1
done
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Component: Build Config → XPCOM
Keywords: checkin-needed
QA Contact: build-config → xpcom
Resolution: --- → FIXED
Target Milestone: --- → mozilla1.9 M11
You need to log in before you can comment on or make changes to this bug.