Hi !

I found a workaround for this by removing the -fPIC Compiler option from
devtools/bin/toolvars.pl. But i don't know if this is a good idea but it
makes the build possible.
But i still would like to have some asm expert tell me why gcc thinks
that the ebx - register is destroyed even if it pushed before the
operation and poped afterwards.

regards Hermann 

Am Samstag, den 31.12.2005, 12:50 +0100 schrieb Hermann Mundprecht:
> Hi !
> 
> I am currently working on an gentoo ebuild for maxdb 7.6.0.16.
> As gentoo developers decided to switch to gcc version 3.4.4 i am also
> switching the build process of maxdb to gcc 3.4.4.
> 
> For a complete build i had to change the following files:
> src/SAPDB/RunTime/System/RTESys_AtomicOperation.c
> src/SAPDB/RunTime/Communication/RTEComm_URIBuilder.hpp
> src/SAPDB/Interfaces/Runtime/Util/IFRUtil_LinkedList.h
> src/SAPDB/ServerTasks/SrvTasks_JobList.hpp
> src/SAPDB/DataAccess/Data_ChainSplitSpaceBackwardRead.hpp
> src/SAPDB/DataAccess/Data_ChainSplitSpaceForwardRead.hpp
> 
> I will of course send the patches as soon as i have a complete build,
> but for now i need help with the file RTESys_AtomicOperation.c.
> 
> The compiler gives the following errors:
> RTESys_AtomicOperation.c fast
> RTESys_AtomicOperation.c: In function `RTESys_CmpxchgInt8':
> RTESys_AtomicOperation.c:383: Fehler: PIC-Register »ebx« wird in »asm«
> zerstört
> RTESys_AtomicOperation.c: In function `RTESys_CmpxchgUInt8':
> RTESys_AtomicOperation.c:435: Fehler: PIC-Register »ebx« wird in »asm«
> zerstört
> 
> As my assembler programming is a bit rusty (last used on a VAX 18 years
> ago) i cannot correct the cause of the error that is in the following
> assembler code:
> 
> ...
> __asm__ __volatile__ (
>       "push %%ebx\n\t"
>       "movl %3, %%eax\n\t"
>       "movl %4, %%edx\n\t"
>       "movl %1, %%ebx\n\t"
>       "movl %2, %%ecx\n\t"
>       "lock; cmpxchg8b %0\n\t"
>       "movl %%edx, %6\n\t"
>       "movl %%eax, %5\n\t"
>         "pop %%ebx\n\t"
>       : 
>       : "m"(*memoryPosition), 
>         "m"(newValue),
>         "m"(resultLow),
>         "m"(expectedValue),
>         "m"(resultHigh),
>         "m"(resultLow),
>         "m"(resultHigh)
>       : "eax", "ebx", "ecx", "edx", "memory"
>       );
> 
> Can someone provide help with this ?
> 
> thanks - Hermann
> -- 
> Hermann Mundprecht <[EMAIL PROTECTED]>
> 
> 


-- 
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to