OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
RE: [Porting] - ven38a.s on Solaris/Intel

From: Mensing, Joerg (joerg.mensingsap.com)
Date: Mon Mar 08 2004 - 02:18:40 CST


Hi,
i think this an assembler specific problem. Seems to hgave something to do with 'rep'...
Maybe you have more luck with the never version of 'ven38a' i found in 7.5 which does not use
the 'repeat while equal':

&if $MACH = I386 and $OSSPEC = LINUX
        .file "ven38a"
        .version "01.01"

        .text
        .align 4

 /* */
 /* EXTERN_C LONG __stdcall sql38aVdcomCall( IUnknown *lpIUnknown, */
 /* PROC pProc, */
 /* void* pBufAddr, */
 /* long BufLen, */
 /* long StackSize ); */
 /* */

        .globl sql38aVdcomCall
        .type sql38aVdcomCall,function
sql38aVdcomCall:

        pushl %ebp
        movl %esp,%ebp

 /* Save All Registers */
        pushf
        pushl %esi
        pushl %edi
        pushl %edx
        pushl %ecx
        pushl %ebx

 /* Save stack pointer for stack recovery after return from call */
        movl %esp,%ebx
 /* Reserve StackSizeInByte */
        subl 24(%ebp),%esp
        addl $4,%esp
 /* Load counter register with number of stack items (16B-sized) */
        movl 20(%ebp),%ecx
        shrl $4,%ecx
 /* Get source address */
        movl 16(%ebp),%esi
 /* Get destination address */
        movl %esp,%edi
 /* Move onto stack */
        cld
        test %ecx, %ecx
        jz .L1
.L0:
        movsl (%esi),%es:(%edi)
        add $12, %esi
        loop .L0
.L1:

 /* push this pointer */
        movl 8(%ebp),%edx
        pushl %edx
 /* Get procedure address */
        movl 12(%ebp),%edx
 /* Call it */
        call *%edx
 /*; Get former stack pointer independend of call 'result' */
        movl %ebx,%esp
 /* Always return OK */
        movl $0,%eax
 /* Get registers back */
        popl %ebx
        popl %ecx
        popl %edx
        popl %edi
        popl %esi
        popf
        movl -4(%ebp),%ebx
        leave
        ret
.Lfe1:
        .size sql38aVdcomCall,.Lfe1-sql38aVdcomCall
; .ident ""
&endif

CU
jrg

> -----Original Message-----
> From: "Döhr, Markus ICC-H" [mailto:Markus.Doehrsiegenia-aubi.com]
> Sent: Freitag, 5. März 2004 17:14
> To: 'maxdblists.mysql.com'
> Subject: [Porting] - ven38a.s on Solaris/Intel
>
>
> Hey,
>
> I hope someone from SAP can (and would like to) help me. I
> have decided to
> give Solaris/Intel another try, I'm quite far by now but I'm stuck in
> en/ven38a.s. The Solaris assembler does not like some statements and
> assembler in general is greek to me...
>
> That's my build log:
>
> !$TOOLSHELL -S ifaconf.pl $INSTRUNTIME
> /home/doehrm/sapdb/V74_03_31/SAPDB_ORG/usr/runtime/7403 ->
> 7.4.3.0,/home\
> /doehrm/sapdb/V74_03_31/SAPDB_ORG/usr registered.
> !cp $TOOL/pgm/idl2xml $INSTROOT/pgm/idl2xml
> !cp $TOOL/pgm/xml2ispc $INSTROOT/pgm/xml2ispc
> ven38a fast
> Assembler: ven38a
> "ven38a.s", line 37 : Syntax error
> cc: assembler failed for ven38a.s
> Error while executing "cc -DDEVELOPMENT -c ven38a.s"
> message: Ungültige Positionierung
> COMMAND error 2
> 'enklib.lib' not made because of dependency errors
> 'kernel-omstst.shm' not made because of dependency errors
>
>
> So looking at the produced code of the pascal file I see this:
>
>
> /* Load counter register with number of int's (bytes / 4) */
> movl 24(%ebp),%eax
> sarl $2,%eax
> movl %eax,%ecx
> /* Get source address */
> movl 16(%ebp),%esi
> /* Get destination address */
> movl %esp,%edi
> rep
> movsl (%esi),%es:(%edi)
> 37------^^^^^^^^^^^^^^^^^^^^^^^
>
> /* push this pointer */
> movl 8(%ebp),%edx
> pushl %edx
> /* Get procedure address */
>
>
> Is my build environment outdated or is this an assembler
> specific problem
> here?
>
> bash-2.05$ CC -V
> CC: Sun WorkShop 6 update 2 C++ 5.3 Patch 111686-19 2003/12/18
>
> bash-2.05$ uname -a
> SunOS plonk 5.9 Generic_112234-11 i86pc i386 i86pc
>
> bash-2.05$ as -V
> as: Sun Compiler Common 7.1 Patch 115114-01 IA32-iteam 2003/09/16
> Usage: as [-V] [-Q{y,n}] [-s]
> [-S[aAbBcClL]] [-K {pic,PIC}] [-o objfile] [-L] [-T]
> [-P [[-Ipath] [-Dname] [-Dname=def] [-Uname]]...]
> [-m [-Ym,path]] [-n] [-xF] [-F] [-b] [-i] file.s ...
>
>
> I had some problems with other assembler files but they
> compiled fine after
> I removed the '#' comment style.
>
> I need the symbol sql38aVdcomCall, it's used in veo38.cpp.
> This assembler
> file is valid for all architechtures but Reliant so it should
> be compilable.
>
> Does someone have an idea on what I can do?
>
> Thanx alot!
>
>
> Greetz,
>
>
>
> SIEGENIA-AUBI KG
> Informationswesen
>
> i.A.
>
> Markus Döhr
> SAP-CC/BC, SAPDB-DBA
>
> Tel.: +49 6503 917-152
> Fax: +49 6503 917-7152
> E-Mail: markus.doehrsiegenia-aubi.com
> Internet: http://www.siegenia-aubi.com
>
>
> --
> MaxDB Discussion Mailing List
> For list archives: http://lists.mysql.com/maxdb
> To unsubscribe:
> http://lists.mysql.com/maxdb?unsub=joerg.mensingsap.com
>

--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb