Thanks, now both linux64 and linux32 pass gdll_df.

I heard there is (or will be) little-endian linux ppc64,
will passing float parameters still work there?

Пт, 23 сен 2016, Xiao-Yong Jin написал(а):
> Solved.  It's not the issue in my patch.  It is the hardwired NCDARGS 32.  
> Under a 32bit system, it means only 16 D values, for which the code doesn't 
> check properly, and nothing actually gets called because SWITCHCALL doesn't 
> handle cnt more than 32.  One could trigger this bug without my patch just by 
> passing 26 D values too.
> 
> The following patch increases NCDARGS to 64, and check dv-data after the type 
> handling.  Should keep j32 happy unless more than 32 D passed.
> 
> diff --git a/jsrc/x15.c b/jsrc/x15.c
> index d0472bb..1c95e62 100644
> --- a/jsrc/x15.c
> +++ b/jsrc/x15.c
> @@ -126,7 +126,7 @@ typedef float (_cdecl    *ALTCALLF)();
>  #define DEPARM          6
>  #define DELIMIT         7       /* too many float/double args  */
>  
> -#define NCDARGS         32      /* hardwired max number of arguments    */
> +#define NCDARGS         64      /* hardwired max number of arguments    */
>  #define NLIBS           100     /* max number of libraries              */
>  
>  #define NLEFTARG        (2*NPATH+4+3*(1+NCDARGS))
> @@ -320,6 +320,214 @@ static void double_trick(double*v, I n){I i=0;
>                    d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
>                    d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
>                    d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31]);break;  \
> +  case 33: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32]);break;                                            \
> +  case 34: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33]);break;                                      \
> +  case 35: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34]);break;                                \
> +  case 36: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35]);break;                          \
> +  case 37: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36]);break;                    \
> +  case 38: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37]);break;              \
> +  case 39: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38]);break;        \
> +  case 40: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39]);break;  \
> +  case 41: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40]);break;                                            \
> +  case 42: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41]);break;                                      \
> +  case 43: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42]);break;                                \
> +  case 44: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43]);break;                          \
> +  case 45: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44]);break;                    \
> +  case 46: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45]);break;              \
> +  case 47: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46]);break;        \
> +  case 48: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47]);break;  \
> +  case 49: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48]);break;                                            \
> +  case 50: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49]);break;                                      \
> +  case 51: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50]);break;                                \
> +  case 52: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51]);break;                          \
> +  case 53: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52]);break;                    \
> +  case 54: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53]);break;              \
> +  case 55: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54]);break;        \
> +  case 56: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55]);break;  \
> +  case 57: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56]);break;                                            \
> +  case 58: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56],d[57]);break;                                      \
> +  case 59: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56],d[57],d[58]);break;                                \
> +  case 60: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56],d[57],d[58],d[59]);break;                          \
> +  case 61: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56],d[57],d[58],d[59],d[60]);break;                    \
> +  case 62: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56],d[57],d[58],d[59],d[60],d[61]);break;              \
> +  case 63: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56],d[57],d[58],d[59],d[60],d[61],d[62]);break;        \
> +  case 64: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7],          \
> +                  d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15],         \
> +                  d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23],         \
> +                  d[24],d[25],d[26],d[27],d[28],d[29],d[30],d[31],         \
> +                  d[32],d[33],d[34],d[35],d[36],d[37],d[38],d[39],         \
> +                  d[40],d[41],d[42],d[43],d[44],d[45],d[46],d[47],         \
> +                  d[48],d[49],d[50],d[51],d[52],d[53],d[54],d[55],         \
> +                  d[56],d[57],d[58],d[59],d[60],d[61],d[62],d[63]);break;  \
>  }
>  
>  static I     stdcalli(STDCALLI fp,I*d,I cnt,DoF*dd,I dcnt){I r;
> @@ -756,6 +964,8 @@ static B jtcdexec1(J jt,CCT*cc,C*zv0,C*wu,I wk,I wt,I 
> wd){A*wv=(A*)wu,x,y,*zv;B
>   CDASSERT(16>=dcnt,DELIMIT);
>  #elif SY_UNIX64 && defined(__x86_64__)
>   if(dcnt>8&&dv-data<6)dv=data+dcnt-2; /* update dv to point to the end */
> +#elif !SY_64
> + CDASSERT(dv-data<=NCDARGS,DECOUNT); /* D needs 2 I args in 32bit system, 
> check it again. */
>  #endif
>  
>   DO(cipcount, convertdown(cipv[i],cipn[i],cipt[i]););  /* convert I to s and 
> int and d to f as required */
> 
> > On Sep 23, 2016, at 11:35 AM, bill lam <bbill....@gmail.com> wrote:
> > 
> > I rebuilt all jconsole/libj/tsdll. linux32 failed gdll_df test.
> > 
> >   9 13 14 26(4 : 0"0)'abcz'
> > try.
> > (+/>yy)=>{.z=:('d1',y,' d ','d '$~2*x) dcd yy=:<"0 [ 1.3*?x#10
> > catch.
> > 7 0-:cder'' NB. failure with too many float/double args allowed
> > end.
> > )
> > 1 1 1 0
> > |assertion failure: RUN1
> > |[-66] /home/bill/jbld/test/gdll_df.ijs
> > 
> >   +/>yy
> > 132.6
> >> {.z
> > 87.1
> > 
> > but it passed under linux64. 
> > 
> > Чт, 22 сен 2016, Xiao-Yong Jin написал(а):
> >> Thanks Bill for the guidance.  I've looked into the ABI's for ppc64 and 
> >> x86_64.
> >> 
> >> Attached is a patch to fix cd for correctly passing floating point values 
> >> under linux_ppc64, linux_x86_64, and darwin_x86_64.
> >> 
> >> On linux ppc64, I tested with RHEL on a power7.  Single precision floating 
> >> point numbers are now correctly passed.  The first 13 of both single and 
> >> double precision numbers are passed via registers, and the rest are 
> >> correctly pushed to stack with other arguments.
> >> 
> >> On x86_64, I tested with both linux and darwin.  The patch lifts the 
> >> restriction of 8 floating point scalars.  Extra single or double precision 
> >> floating point numbers are correctly pushed to stack.  Now you will never 
> >> have to see the cd domain error "7 0 - system limit - linux64 max 8 
> >> float/double scalars".  We can remove this line from our dictionary.
> >> 
> >> I imagine it would take minimal changes to apply to other x86_64 systems.  
> >> Though I don't have the OS to test, but I'd be glad to explain and help 
> >> out.
> >> 
> >> Best,
> >> Xiao-Yong
> >> 
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> > 
> > -- 
> > regards,
> > ====================================================
> > GPG key 1024D/4434BAB3 2008-08-24
> > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
> > gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to