diff -ur gnupg-1.0.6/acconfig.h gnupg-1.0.6-MacOSX/acconfig.h --- gnupg-1.0.6/acconfig.h Thu Mar 8 14:57:26 2001 +++ gnupg-1.0.6-MacOSX/acconfig.h Sun Feb 24 22:22:42 2002 @@ -64,6 +64,8 @@ #undef HAVE_BROKEN_MLOCK +#undef MLOCK_SET_PERMS + /* defined if we have a /dev/random and /dev/urandom */ #undef HAVE_DEV_RANDOM /* and the real names of the random devices */ diff -ur gnupg-1.0.6/acinclude.m4 gnupg-1.0.6-MacOSX/acinclude.m4 --- gnupg-1.0.6/acinclude.m4 Fri Apr 27 16:42:25 2001 +++ gnupg-1.0.6-MacOSX/acinclude.m4 Sun Feb 24 22:22:42 2002 @@ -431,33 +431,70 @@ pool = malloc( 4096 + pgsize ); if( !pool ) - return 2; + exit (2); pool += (pgsize - ((long int)pool % pgsize)); err = mlock( pool, 4096 ); if( !err || errno == EPERM ) - return 0; /* okay */ + exit (0); /* okay */ - return 1; /* hmmm */ + exit (1); /* hmmm */ } ], gnupg_cv_have_broken_mlock="no", - gnupg_cv_have_broken_mlock="yes", + gnupg_cv_have_broken_mlock="maybe", gnupg_cv_have_broken_mlock="assume-no" ) ) - if test "$gnupg_cv_have_broken_mlock" = "yes"; then + AC_MSG_RESULT($gnupg_cv_have_broken_mlock) + fi + if test "$gnupg_cv_have_broken_mlock" = "maybe"; then + AC_CACHE_VAL(gnupg_cv_have_broken_mlock_set_perm, + AC_TRY_RUN([ + #include + #include + #include + #include + #include + #include + + int main() + { + char *pool; + int err; + long int pgsize = getpagesize(); + + pool = malloc( 4096 + pgsize ); + if( !pool ) + return 2; + pool += (pgsize - ((long int)pool % pgsize)); + + /* check to see if mlock needs the memory permissions set */ + mprotect( pool, 4096, PROT_EXEC | PROT_WRITE | PROT_READ); + err = mlock( pool, 4096 ); + if ( !err || errno == EPERM ) + return 0; /* okay - but have to set memory permissions */ + + return 1; /* hmmm */ + } + + ], + gnupg_cv_have_broken_mlock_set_perm="yes", + gnupg_cv_have_broken_mlock_set_perm="no", + gnupg_cv_have_broken_mlock_set_perm="assume-no" + ) + ) + if test "$gnupg_cv_have_broken_mlock_set_perm" = "yes"; then + AC_DEFINE(MLOCK_SET_PERMS) + AC_MSG_RESULT(set perm) + else + if test "$gnupg_cv_have_broken_mlock_set_perm" = "no"; then AC_DEFINE(HAVE_BROKEN_MLOCK) AC_MSG_RESULT(yes) - else - if test "$gnupg_cv_have_broken_mlock" = "no"; then - AC_MSG_RESULT(no) - else - AC_MSG_RESULT(assuming no) - fi - fi - fi + fi + fi + fi ]) diff -ur gnupg-1.0.6/aclocal.m4 gnupg-1.0.6-MacOSX/aclocal.m4 --- gnupg-1.0.6/aclocal.m4 Tue May 29 08:33:42 2001 +++ gnupg-1.0.6-MacOSX/aclocal.m4 Sun Feb 24 22:22:42 2002 @@ -435,33 +435,70 @@ pool = malloc( 4096 + pgsize ); if( !pool ) - return 2; + exit (2); pool += (pgsize - ((long int)pool % pgsize)); err = mlock( pool, 4096 ); if( !err || errno == EPERM ) - return 0; /* okay */ + exit (0); /* okay */ - return 1; /* hmmm */ + exit (1); /* hmmm */ } ], gnupg_cv_have_broken_mlock="no", - gnupg_cv_have_broken_mlock="yes", + gnupg_cv_have_broken_mlock="maybe", gnupg_cv_have_broken_mlock="assume-no" ) ) - if test "$gnupg_cv_have_broken_mlock" = "yes"; then + AC_MSG_RESULT($gnupg_cv_have_broken_mlock) + fi + if test "$gnupg_cv_have_broken_mlock" = "maybe"; then + AC_CACHE_VAL(gnupg_cv_have_broken_mlock_set_perm, + AC_TRY_RUN([ + #include + #include + #include + #include + #include + #include + + int main() + { + char *pool; + int err; + long int pgsize = getpagesize(); + + pool = malloc( 4096 + pgsize ); + if( !pool ) + return 2; + pool += (pgsize - ((long int)pool % pgsize)); + + /* check to see if mlock needs the memory permissions set */ + mprotect( pool, 4096, PROT_EXEC | PROT_WRITE | PROT_READ); + err = mlock( pool, 4096 ); + if ( !err || errno == EPERM ) + return 0; /* okay - but have to set memory permissions */ + + return 1; /* hmmm */ + } + + ], + gnupg_cv_have_broken_mlock_set_perm="yes", + gnupg_cv_have_broken_mlock_set_perm="no", + gnupg_cv_have_broken_mlock_set_perm="assume-no" + ) + ) + if test "$gnupg_cv_have_broken_mlock_set_perm" = "yes"; then + AC_DEFINE(MLOCK_SET_PERMS) + AC_MSG_RESULT(set perm) + else + if test "$gnupg_cv_have_broken_mlock_set_perm" = "no"; then AC_DEFINE(HAVE_BROKEN_MLOCK) AC_MSG_RESULT(yes) - else - if test "$gnupg_cv_have_broken_mlock" = "no"; then - AC_MSG_RESULT(no) - else - AC_MSG_RESULT(assuming no) - fi - fi - fi + fi + fi + fi ]) @@ -524,7 +561,7 @@ aix*) ac_symcode='[BCDTU]' ;; -freebsd* | netbsd* | openbsd* | bsdi* | sunos* | cygwin32* | mingw32*) +freebsd* | netbsd* | openbsd* | bsdi* | sunos* | cygwin32* | mingw32* | darwin*) ac_sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' ac_symxfrm='_\1 \1' ;; diff -ur gnupg-1.0.6/cipher/dynload.c gnupg-1.0.6-MacOSX/cipher/dynload.c --- gnupg-1.0.6/cipher/dynload.c Sun Apr 29 15:45:42 2001 +++ gnupg-1.0.6-MacOSX/cipher/dynload.c Sun Feb 24 22:22:42 2002 @@ -31,6 +31,12 @@ #include #include #endif + +#ifdef HAVE_DYLD /* NeXT/Apple dynamic linker */ + #include + #include +#endif + #ifdef __MINGW32__ #include #endif @@ -69,6 +75,44 @@ return addr; } #endif /*HAVE_DL_SHL_LOAD*/ + +#ifdef HAVE_DYLD /* NeXT/Apple dynamic linker */ +#define HAVE_DL_DLOPEN +#define dlerror() (errno == 0 ? NULL : strerror(errno)) + +void* +dlopen(const char *pathname, int mode) +{ + NSObjectFileImage image; + NSObjectFileImageReturnCode rc; + + rc = NSCreateObjectFileImageFromFile(pathname, &image); + if (rc != NSObjectFileImageSuccess) { + return NULL; + } + return NSLinkModule(image, pathname, TRUE); +} + +int +dlclose( void *handle ) +{ + NSUnLinkModule(handle, FALSE); + return 0; +} + +void* +dlsym( void *handle, const char *symname ) +{ + NSSymbol symbol; + void *result; + symbol = NSLookupAndBindSymbol(symname); + result = NSAddressOfSymbol(symbol); + if(result != NULL) + errno = 0; + return result; +} + +#endif /* HAVE_DYLD */ #ifdef __MINGW32__ #define HAVE_DL_DLOPEN diff -ur gnupg-1.0.6/config.h.in gnupg-1.0.6-MacOSX/config.h.in --- gnupg-1.0.6/config.h.in Sun May 27 12:32:46 2001 +++ gnupg-1.0.6-MacOSX/config.h.in Sun Feb 24 22:23:47 2002 @@ -96,6 +96,7 @@ #undef HAVE_U32_TYPEDEF #undef HAVE_BROKEN_MLOCK +#undef MLOCK_SET_PERMS /* defined if we have a /dev/random and /dev/urandom */ #undef HAVE_DEV_RANDOM @@ -112,6 +113,7 @@ #undef HAVE_DL_DLOPEN #undef HAVE_DL_SHL_LOAD #undef HAVE_DLD_DLD_LINK +#undef HAVE_DYLD #undef USE_SHM_COPROCESSING diff -ur gnupg-1.0.6/configure gnupg-1.0.6-MacOSX/configure --- gnupg-1.0.6/configure Tue May 29 08:57:37 2001 +++ gnupg-1.0.6-MacOSX/configure Sun Feb 24 22:33:25 2002 @@ -1,7 +1,7 @@ #! /bin/sh # From configure.in Revision: 1.103.2.34 -CDPATH= +unset CDPATH @@ -2415,7 +2415,7 @@ aix*) ac_symcode='[BCDTU]' ;; -freebsd* | netbsd* | openbsd* | bsdi* | sunos* | cygwin32* | mingw32*) +freebsd* | netbsd* | openbsd* | bsdi* | sunos* | cygwin32* | mingw32* | darwin*) ac_sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' ac_symxfrm='_\1 \1' ;; @@ -2666,6 +2666,7 @@ rs6000 | powerpc | powerpcle) # Yippee! All RS/6000 and PowerPC code is position-independent. CFLAGS_PIC="" + NO_PIC=no ;; esac @@ -2767,6 +2768,12 @@ DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC" ;; + *-darwin*) + NAME_OF_DEV_RANDOM="/dev/random" + NAME_OF_DEV_URANDOM="/dev/urandom" + DYNLINK_MOD_CFLAGS="-bundle -undefined suppress -force_flat_namespace $CFLAGS_PIC" + ;; + *) NAME_OF_DEV_RANDOM="/dev/random" NAME_OF_DEV_URANDOM="/dev/urandom" @@ -4951,6 +4958,19 @@ DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC" use_gnupg_extensions=yes + else + echo $ac_n "using dyld"" $ac_c" 1>&6 +echo "configure:4898: using dyld $ac_c" >&5 + cat >> confdefs.h <<\EOF +#define USE_DYNAMIC_LINKING 1 +EOF + + cat >> confdefs.h <<\EOF +#define HAVE_DYLD 1 +EOF + + DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC" + use_gnupg_extensions=yes fi fi fi @@ -4963,8 +4983,6 @@ echo "$ac_t""has been disabled" 1>&6 fi - - if test "$use_gnupg_extensions" = yes ; then ENABLE_GNUPG_EXTENSIONS_TRUE= ENABLE_GNUPG_EXTENSIONS_FALSE='#' @@ -6343,6 +6361,61 @@ else if test "$cross_compiling" = yes; then gnupg_cv_have_broken_mlock="assume-no" +else + cat > conftest.$ac_ext < + #include + #include + #include + #include + #include + + int main() + { + char *pool; + int err; + long int pgsize = getpagesize(); + + pool = malloc( 4096 + pgsize ); + if( !pool ) + exit (2); + pool += (pgsize - ((long int)pool % pgsize)); + + err = mlock( pool, 4096 ); + if( !err || errno == EPERM ) { + exit (0); /* okay */ + } + exit(1); /* hmmm */ + } + + +EOF +if { (eval echo configure:6375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + gnupg_cv_have_broken_mlock="no" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + gnupg_cv_have_broken_mlock="maybe" +fi +rm -fr conftest* +fi + + +fi + + echo "$ac_t""$gnupg_cv_have_broken_mlock" 1>&6 + fi + if test "$gnupg_cv_have_broken_mlock" = "maybe"; then + if eval "test \"`echo '$''{'gnupg_cv_have_broken_mlock_set_perm'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + gnupg_cv_have_broken_mlock_set_perm="assume-no" else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - gnupg_cv_have_broken_mlock="no" + gnupg_cv_have_broken_mlock_set_perm="yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - gnupg_cv_have_broken_mlock="yes" + gnupg_cv_have_broken_mlock_set_perm="no" fi rm -fr conftest* fi fi + + if test "$gnupg_cv_have_broken_mlock_set_perm" = "yes"; then + cat >> confdefs.h <<\EOF +#define MLOCK_SET_PERMS 1 +EOF - if test "$gnupg_cv_have_broken_mlock" = "yes"; then + echo "$ac_t""set perm" 1>&6 + else + if test "$gnupg_cv_have_broken_mlock_set_perm" = "no"; then cat >> confdefs.h <<\EOF #define HAVE_BROKEN_MLOCK 1 EOF echo "$ac_t""yes" 1>&6 - else - if test "$gnupg_cv_have_broken_mlock" = "no"; then - echo "$ac_t""no" 1>&6 - else - echo "$ac_t""assuming no" 1>&6 - fi - fi - fi + fi + fi + fi for ac_hdr in sys/stat.h unistd.h direct.h do diff -ur gnupg-1.0.6/configure.in gnupg-1.0.6-MacOSX/configure.in --- gnupg-1.0.6/configure.in Mon May 28 14:46:13 2001 +++ gnupg-1.0.6-MacOSX/configure.in Sun Feb 24 22:22:43 2002 @@ -21,7 +21,7 @@ AC_REVISION($Revision: 1.2 $)dnl dnl Must reset CDPATH so that bash's cd does not print to stdout -CDPATH= +unset CDPATH AC_PREREQ(2.13) AC_INIT(g10/g10.c) @@ -207,6 +207,10 @@ if test -z "$GCC" ; then CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE" fi + ;; + + *Darwin* + CFLAGS="$CFLAGS -traditional-cpp" ;; *-dec-osf4*) if test -z "$GCC" ; then diff -ur gnupg-1.0.6/mpi/config.links gnupg-1.0.6-MacOSX/mpi/config.links --- gnupg-1.0.6/mpi/config.links Sun Apr 29 13:36:18 2001 +++ gnupg-1.0.6-MacOSX/mpi/config.links Sun Feb 24 22:22:43 2002 @@ -206,6 +206,15 @@ path="powerpc32" ;; + powerpc-apple-darwin*) + echo '/* configured Darwin on powerpc */' >>./mpi/asm-syntax.h + echo '#define NEXT_SYNTAX' >>./mpi/asm-syntax.h + echo '#define USE_PPC_PATCHES' >>./mpi/asm-syntax.h + cat $srcdir/mpi/powerpc32/syntax.h >>./mpi/asm-syntax.h + mpi_sflags="-Wa,-mppc" + path="powerpc32" + ;; + rs6000-*-aix[456789]* | \ rs6000-*-aix3.2.[456789]) mpi_sflags="-Wa,-mpwr" diff -ur gnupg-1.0.6/mpi/powerpc32/mpih-add1.S gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-add1.S --- gnupg-1.0.6/mpi/powerpc32/mpih-add1.S Sun Apr 29 15:12:37 2001 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-add1.S Sun Feb 24 22:22:43 2002 @@ -95,41 +95,41 @@ EALIGN(mpihelp_add_n,3,0) /* Set up for loop below. */ - mtcrf 0x01,%r6 - srwi. %r7,%r6,1 - li %r10,0 - mtctr %r7 + mtcrf 0x01,R(r6) + srwi. R(r7),R(r6),1 + li R(r10),0 + mtctr R(r7) bt 31,2f /* Clear the carry. */ - addic %r0,%r0,0 + addic R(r0),R(r0),0 /* Adjust pointers for loop. */ - addi %r3,%r3,-4 - addi %r4,%r4,-4 - addi %r5,%r5,-4 + addi R(r3),R(r3),-4 + addi R(r4),R(r4),-4 + addi R(r5),R(r5),-4 b 0f -2: lwz %r7,0(%r5) - lwz %r6,0(%r4) - addc %r6,%r6,%r7 - stw %r6,0(%r3) +2: lwz R(r7),0(R(r5)) + lwz R(r6),0(R(r4)) + addc R(r6),R(r6),R(r7) + stw R(r6),0(R(r3)) beq 1f /* The loop. */ /* Align start of loop to an odd word boundary to guarantee that the last two words can be fetched in one access (for 601). */ -0: lwz %r9,4(%r4) - lwz %r8,4(%r5) - lwzu %r6,8(%r4) - lwzu %r7,8(%r5) - adde %r8,%r9,%r8 - stw %r8,4(%r3) - adde %r6,%r6,%r7 - stwu %r6,8(%r3) +0: lwz R(r9),4(R(r4)) + lwz R(r8),4(R(r5)) + lwzu R(r6),8(R(r4)) + lwzu R(r7),8(R(r5)) + adde R(r8),R(r9),R(r8) + stw R(r8),4(R(r3)) + adde R(r6),R(r6),R(r7) + stwu R(r6),8(R(r3)) bdnz 0b /* Return the carry. */ -1: addze %r3,%r10 +1: addze R(r3),R(r10) blr END(mpihelp_add_n) #endif diff -ur gnupg-1.0.6/mpi/powerpc32/mpih-lshift.S gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-lshift.S --- gnupg-1.0.6/mpi/powerpc32/mpih-lshift.S Sun Apr 29 15:12:26 2001 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-lshift.S Sun Feb 24 22:22:43 2002 @@ -97,69 +97,69 @@ unsigned int cnt) */ EALIGN(mpihelp_lshift,3,0) - mtctr %r5 # copy size into CTR - cmplwi %cr0,%r5,16 # is size < 16 - slwi %r0,%r5,2 - add %r7,%r3,%r0 # make r7 point at end of res - add %r4,%r4,%r0 # make r4 point at end of s1 - lwzu %r11,-4(%r4) # load first s1 limb - subfic %r8,%r6,32 - srw %r3,%r11,%r8 # compute function return value - bge %cr0,L(big) # branch if size >= 16 + mtctr R(r5) /* copy size into CTR */ + cmplwi R(cr0),R(r5),16 /* is size < 16 */ + slwi R(r0),R(r5),2 + add R(r7),R(r3),R(r0) /* make r7 point at end of res */ + add R(r4),R(r4),R(r0) /* make r4 point at end of s1 */ + lwzu R(r11),-4(R(r4)) /* load first s1 limb */ + subfic R(r8),R(r6),32 + srw R(r3),R(r11),R(r8) /* compute function return value */ + bge R(cr0),L(big) /* branch if size >= 16 */ bdz L(end1) -0: lwzu %r10,-4(%r4) - slw %r9,%r11,%r6 - srw %r12,%r10,%r8 - or %r9,%r9,%r12 - stwu %r9,-4(%r7) +0: lwzu R(r10),-4(R(r4)) + slw R(r9),R(r11),R(r6) + srw R(r12),R(r10),R(r8) + or R(r9),R(r9),R(r12) + stwu R(r9),-4(R(r7)) bdz L(end2) - lwzu %r11,-4(%r4) - slw %r9,%r10,%r6 - srw %r12,%r11,%r8 - or %r9,%r9,%r12 - stwu %r9,-4(%r7) + lwzu R(r11),-4(R(r4)) + slw R(r9),R(r10),R(r6) + srw R(r12),R(r11),R(r8) + or R(r9),R(r9),R(r12) + stwu R(r9),-4(R(r7)) bdnz 0b -L(end1):slw %r0,%r11,%r6 - stw %r0,-4(%r7) +L(end1):slw R(r0),R(r11),R(r6) + stw R(r0),-4(R(r7)) blr /* Guaranteed not to succeed. */ -L(boom): tweq %r0,%r0 +L(boom): tweq R(r0),R(r0) /* We imitate a case statement, by using (yuk!) fixed-length code chunks, of size 4*12 bytes. We have to do this (or something) to make this PIC. */ -L(big): mflr %r9 - bltl- %cr0,L(boom) # Never taken, only used to set LR. - slwi %r10,%r6,4 - mflr %r12 - add %r10,%r12,%r10 - slwi %r8,%r6,5 - add %r10,%r8,%r10 - mtctr %r10 - addi %r5,%r5,-1 - mtlr %r9 +L(big): mflr R(r9) + bltl- R(cr0),L(boom) /* Never taken, only used to set LR. */ + slwi R(r10),R(r6),4 + mflr R(r12) + add R(r10),R(r12),R(r10) + slwi R(r8),R(r6),5 + add R(r10),R(r8),R(r10) + mtctr R(r10) + addi R(r5),R(r5),-1 + mtlr R(r9) bctr -L(end2):slw %r0,%r10,%r6 - stw %r0,-4(%r7) +L(end2):slw R(r0),R(r10),R(r6) + stw R(r0),-4(R(r7)) blr #define DO_LSHIFT(n) \ - mtctr %r5; \ -0: lwzu %r10,-4(%r4); \ - slwi %r9,%r11,n; \ - inslwi %r9,%r10,n,32-n; \ - stwu %r9,-4(%r7); \ - bdz- L(end2); \ - lwzu %r11,-4(%r4); \ - slwi %r9,%r10,n; \ - inslwi %r9,%r11,n,32-n; \ - stwu %r9,-4(%r7); \ - bdnz 0b; \ + mtctr R(r5) NEW_LINE \ +0: lwzu R(r10),-4(R(r4)) NEW_LINE \ + slwi R(r9),R(r11),n NEW_LINE \ + inslwi R(r9),R(r10),n,(32-n) NEW_LINE \ + stwu R(r9),-4(R(r7)) NEW_LINE \ + bdz- L(end2) NEW_LINE \ + lwzu R(r11),-4(R(r4)) NEW_LINE \ + slwi R(r9),R(r10),n NEW_LINE \ + inslwi R(r9),R(r11),n,(32-n) NEW_LINE \ + stwu R(r9),-4(R(r7)) NEW_LINE \ + bdnz 0b NEW_LINE \ b L(end1) DO_LSHIFT(1) diff -ur gnupg-1.0.6/mpi/powerpc32/mpih-mul1.S gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-mul1.S --- gnupg-1.0.6/mpi/powerpc32/mpih-mul1.S Sun Apr 29 15:13:03 2001 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-mul1.S Sun Feb 24 22:22:43 2002 @@ -41,8 +41,8 @@ * The code trivially generalizes to 64 bit limbs for the PC620. */ - .toc - .csect .mpihelp_mul_1[PR] + /* .toc + .csect .mpihelp_mul_1[PR] */ .align 2 .globl mpihelp_mul_1 .globl .mpihelp_mul_1 @@ -97,24 +97,24 @@ Calculate s1*s2 and put result in res_ptr; return carry. */ ENTRY(mpihelp_mul_1) - mtctr %r5 + mtctr R(r5) - lwz %r0,0(%r4) - mullw %r7,%r0,%r6 - mulhwu %r10,%r0,%r6 - addi %r3,%r3,-4 # adjust res_ptr - addic %r5,%r5,0 # clear cy with dummy insn + lwz R(r0),0(R(r4)) + mullw R(r7),R(r0),R(r6) + mulhwu R(r10),R(r0),R(r6) + addi R(r3),R(r3),-4 /* adjust res_ptr */ + addic R(r5),R(r5),0 /* clear cy with dummy insn */ bdz 1f -0: lwzu %r0,4(%r4) - stwu %r7,4(%r3) - mullw %r8,%r0,%r6 - adde %r7,%r8,%r10 - mulhwu %r10,%r0,%r6 +0: lwzu R(r0),4(R(r4)) + stwu R(r7),4(R(r3)) + mullw R(r8),R(r0),R(r6) + adde R(r7),R(r8),R(r10) + mulhwu R(r10),R(r0),R(r6) bdnz 0b -1: stw %r7,4(%r3) - addze %r3,%r10 +1: stw R(r7),4(R(r3)) + addze R(r3),R(r10) blr END(mpihelp_mul_1) #endif diff -ur gnupg-1.0.6/mpi/powerpc32/mpih-mul2.S gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-mul2.S --- gnupg-1.0.6/mpi/powerpc32/mpih-mul2.S Sun Apr 29 15:13:14 2001 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-mul2.S Sun Feb 24 22:22:43 2002 @@ -100,28 +100,28 @@ mp_size_t s1_size, mp_limb_t s2_limb) Calculate res+s1*s2 and put result back in res; return carry. */ ENTRY(mpihelp_addmul_1) - mtctr %r5 + mtctr R(r5) - lwz %r0,0(%r4) - mullw %r7,%r0,%r6 - mulhwu %r10,%r0,%r6 - lwz %r9,0(%r3) - addc %r8,%r7,%r9 - addi %r3,%r3,-4 /* adjust res_ptr */ + lwz R(r0),0(R(r4)) + mullw R(r7),R(r0),R(r6) + mulhwu R(r10),R(r0),R(r6) + lwz R(r9),0(R(r3)) + addc R(r8),R(r7),R(r9) + addi R(r3),R(r3),-4 /* adjust res_ptr */ bdz 1f -0: lwzu %r0,4(%r4) - stwu %r8,4(%r3) - mullw %r8,%r0,%r6 - adde %r7,%r8,%r10 - mulhwu %r10,%r0,%r6 - lwz %r9,4(%r3) - addze %r10,%r10 - addc %r8,%r7,%r9 +0: lwzu R(r0),4(R(r4)) + stwu R(r8),4(R(r3)) + mullw R(r8),R(r0),R(r6) + adde R(r7),R(r8),R(r10) + mulhwu R(r10),R(r0),R(r6) + lwz R(r9),4(R(r3)) + addze R(r10),R(r10) + addc R(r8),R(r7),R(r9) bdnz 0b -1: stw %r8,4(%r3) - addze %r3,%r10 +1: stw R(r8),4(R(r3)) + addze R(r3),R(r10) blr END(mpihelp_addmul_1) #endif diff -ur gnupg-1.0.6/mpi/powerpc32/mpih-mul3.S gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-mul3.S --- gnupg-1.0.6/mpi/powerpc32/mpih-mul3.S Sun Apr 29 15:13:24 2001 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-mul3.S Sun Feb 24 22:22:43 2002 @@ -101,30 +101,30 @@ Calculate res-s1*s2 and put result back in res; return carry. */ ENTRY(mpihelp_submul_1) - mtctr %r5 + mtctr R(r5) - lwz %r0,0(%r4) - mullw %r7,%r0,%r6 - mulhwu %r10,%r0,%r6 - lwz %r9,0(%r3) - subf %r8,%r7,%r9 - addc %r7,%r7,%r8 # invert cy (r7 is junk) - addi %r3,%r3,-4 # adjust res_ptr + lwz R(r0),0(R(r4)) + mullw R(r7),R(r0),R(r6) + mulhwu R(r10),R(r0),R(r6) + lwz R(r9),0(R(r3)) + subf R(r8),R(r7),R(r9) + addc R(r7),R(r7),R(r8) /* invert cy (r7 is junk) */ + addi R(r3),R(r3),-4 /* adjust res_ptr */ bdz 1f -0: lwzu %r0,4(%r4) - stwu %r8,4(%r3) - mullw %r8,%r0,%r6 - adde %r7,%r8,%r10 - mulhwu %r10,%r0,%r6 - lwz %r9,4(%r3) - addze %r10,%r10 - subf %r8,%r7,%r9 - addc %r7,%r7,%r8 # invert cy (r7 is junk) +0: lwzu R(r0),4(R(r4)) + stwu R(r8),4(R(r3)) + mullw R(r8),R(r0),R(r6) + adde R(r7),R(r8),R(r10) + mulhwu R(r10),R(r0),R(r6) + lwz R(r9),4(R(r3)) + addze R(r10),R(r10) + subf R(r8),R(r7),R(r9) + addc R(r7),R(r7),R(r8) /* invert cy (r7 is junk) */ bdnz 0b -1: stw %r8,4(%r3) - addze %r3,%r10 +1: stw R(r8),4(R(r3)) + addze R(r3),R(r10) blr END(mpihelp_submul_1) #endif diff -ur gnupg-1.0.6/mpi/powerpc32/mpih-rshift.S gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-rshift.S --- gnupg-1.0.6/mpi/powerpc32/mpih-rshift.S Sun Apr 29 15:13:37 2001 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-rshift.S Sun Feb 24 22:22:43 2002 @@ -100,32 +100,32 @@ cnt r6 */ ENTRY(mpihelp_rshift) - mtctr 5 # copy size into CTR - addi 7,3,-4 # move adjusted res_ptr to free return reg - subfic 8,6,32 - lwz 11,0(4) # load first s1 limb - slw 3,11,8 # compute function return value + mtctr R(r5) /* copy size into CTR */ + addi R(r7),R(r3),-4 /* move adjusted res_ptr to free return reg */ + subfic R(r8),R(r6),32 + lwz R(r11),0(R(r4)) /* load first s1 limb */ + slw R(r3),R(r11),R(r8) /* compute function return value */ bdz 1f -0: lwzu 10,4(4) - srw 9,11,6 - slw 12,10,8 - or 9,9,12 - stwu 9,4(7) +0: lwzu R(r10),4(R(r4)) + srw R(r9),R(r11),R(r6) + slw R(r12),R(r10),R(r8) + or R(r9),R(r9),R(r12) + stwu R(r9),4(R(r7)) bdz 2f - lwzu 11,4(4) - srw 9,10,6 - slw 12,11,8 - or 9,9,12 - stwu 9,4(7) + lwzu R(r11),4(R(r4)) + srw R(r9),R(r10),R(r6) + slw R(r12),R(r11),R(r8) + or R(r9),R(r9),R(r12) + stwu R(r9),4(R(r7)) bdnz 0b -1: srw 0,11,6 - stw 0,4(7) +1: srw R(r0),R(r11),R(r6) + stw R(r0),4(R(r7)) blr -2: srw 0,10,6 - stw 0,4(7) +2: srw R(r0),R(r10),R(r6) + stw R(r0),4(R(r7)) blr END(mpihelp_rshift) #endif diff -ur gnupg-1.0.6/mpi/powerpc32/mpih-sub1.S gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-sub1.S --- gnupg-1.0.6/mpi/powerpc32/mpih-sub1.S Sun Apr 29 15:13:54 2001 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/mpih-sub1.S Sun Feb 24 22:22:43 2002 @@ -92,41 +92,41 @@ EALIGN(mpihelp_sub_n,3,1) /* Set up for loop below. */ - mtcrf 0x01,%r6 - srwi. %r7,%r6,1 - mtctr %r7 + mtcrf 0x01,R(r6) + srwi. R(r7),R(r6),1 + mtctr R(r7) bt 31,2f /* Set the carry (clear the borrow). */ - subfc %r0,%r0,%r0 + subfc R(r0),R(r0),R(r0) /* Adjust pointers for loop. */ - addi %r3,%r3,-4 - addi %r4,%r4,-4 - addi %r5,%r5,-4 + addi R(r3),R(r3),-4 + addi R(r4),R(r4),-4 + addi R(r5),R(r5),-4 b 0f -2: lwz %r7,0(%r5) - lwz %r6,0(%r4) - subfc %r6,%r7,%r6 - stw %r6,0(%r3) +2: lwz R(r7),0(R(r5)) + lwz R(r6),0(R(r4)) + subfc R(r6),R(r7),R(r6) + stw R(r6),0(R(r3)) beq 1f /* Align start of loop to an odd word boundary to guarantee that the last two words can be fetched in one access (for 601). This turns out to be important. */ 0: - lwz %r9,4(%r4) - lwz %r8,4(%r5) - lwzu %r6,8(%r4) - lwzu %r7,8(%r5) - subfe %r8,%r8,%r9 - stw %r8,4(%r3) - subfe %r6,%r7,%r6 - stwu %r6,8(%r3) + lwz R(r9),4(R(r4)) + lwz R(r8),4(R(r5)) + lwzu R(r6),8(R(r4)) + lwzu R(r7),8(R(r5)) + subfe R(r8),R(r8),R(r9) + stw R(r8),4(R(r3)) + subfe R(r6),R(r7),R(r6) + stwu R(r6),8(R(r3)) bdnz 0b /* Return the borrow. */ -1: subfe %r3,%r3,%r3 - neg %r3,%r3 +1: subfe R(r3),R(r3),R(r3) + neg R(r3),R(r3) blr END(mpihelp_sub_n) #endif diff -ur gnupg-1.0.6/mpi/powerpc32/syntax.h gnupg-1.0.6-MacOSX/mpi/powerpc32/syntax.h --- gnupg-1.0.6/mpi/powerpc32/syntax.h Tue Dec 8 13:20:46 1998 +++ gnupg-1.0.6-MacOSX/mpi/powerpc32/syntax.h Sun Feb 24 22:22:43 2002 @@ -20,12 +20,26 @@ Boston, MA 02111-1307, USA. */ -#define USE_PPC_PATCHES 1 +/* Define the syntax for specifying a CPU register */ +#if defined(BSD_SYNTAX) || defined(ELF_SYNTAX) +#ifdef __STDC__ +# define R(reg) %##reg +#else +# define R(reg) %/**/reg +#endif +#elif defined(NEXT_SYNTAX) +# define R(reg) reg +#endif /* This seems to always be the case on PPC. */ #define ALIGNARG(log2) log2 /* For ELF we need the `.type' directive to make shared libs work right. */ +#if defined(BSD_SYNTAX) || defined(ELF_SYNTAX) #define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg; +#elif defined(NEXT_SYNTAX) +#define ASM_TYPE_DIRECTIVE(name,typearg) +#endif + #define ASM_SIZE_DIRECTIVE(name) .size name,.-name #define ASM_GLOBAL_DIRECTIVE .globl @@ -41,35 +55,45 @@ # define L(body) .L/**/body #endif +/* How to begin a new line of assembly */ +#if defined(BSD_SYNTAX) || defined(ELF_SYNTAX) +#define NEW_LINE ; +#elif defined(NEXT_SYNTAX) +#define NEW_LINE @ +#endif + /* No profiling of gmp's assembly for now... */ #define CALL_MCOUNT /* no profiling */ -#define ENTRY(name) \ - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ - ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ - .align ALIGNARG(2); \ - C_LABEL(name) \ +#define ENTRY(name) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name) NEW_LINE \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) NEW_LINE \ + .align ALIGNARG(2) NEW_LINE \ + C_LABEL(name) \ CALL_MCOUNT #define EALIGN_W_0 /* No words to insert. */ #define EALIGN_W_1 nop -#define EALIGN_W_2 nop;nop -#define EALIGN_W_3 nop;nop;nop -#define EALIGN_W_4 EALIGN_W_3;nop -#define EALIGN_W_5 EALIGN_W_4;nop -#define EALIGN_W_6 EALIGN_W_5;nop -#define EALIGN_W_7 EALIGN_W_6;nop +#define EALIGN_W_2 nop NEW_LINE nop +#define EALIGN_W_3 nop NEW_LINE nop NEW_LINE nop +#define EALIGN_W_4 EALIGN_W_3 NEW_LINE nop +#define EALIGN_W_5 EALIGN_W_4 NEW_LINE nop +#define EALIGN_W_6 EALIGN_W_5 NEW_LINE nop +#define EALIGN_W_7 EALIGN_W_6 NEW_LINE nop /* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes past a 2^align boundary. */ -#define EALIGN(name, alignt, words) \ - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ - ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ - .align ALIGNARG(alignt); \ - EALIGN_W_##words; \ +#define EALIGN(name, alignt, words) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name) NEW_LINE \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \ + .align ALIGNARG(alignt) NEW_LINE \ + EALIGN_W_##words NEW_LINE \ C_LABEL(name) #undef END -#define END(name) \ - ASM_SIZE_DIRECTIVE(name) +#if defined(BSD_SYNTAX) || defined(ELF_SYNTAX) +#define END(name) ASM_SIZE_DIRECTIVE(name) +#elif defined(NEXT_SYNTAX) +#define END(name) +#endif Only in gnupg-1.0.6-MacOSX: new.patch4 diff -ur gnupg-1.0.6/util/secmem.c gnupg-1.0.6-MacOSX/util/secmem.c --- gnupg-1.0.6/util/secmem.c Wed May 23 15:27:20 2001 +++ gnupg-1.0.6-MacOSX/util/secmem.c Sun Feb 24 22:22:43 2002 @@ -129,6 +129,12 @@ if( err && errno ) err = errno; } + #elif MLOCK_SET_PERMS + mprotect( p, n, PROT_EXEC | PROT_WRITE | PROT_READ); + /* try to set memory permissions */ + err = mlock( p, n); + if( err && errno ) + err = errno; #else err = mlock( p, n ); if( err && errno )