On-going portability issue with 9.9p2

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 




So, I applied the patch from :


https://lists.mindrot.org/pipermail/openssh-unix-dev/2025-February/041816.html

Then did the usual autoreconf dance and then configure fails :

sparc64$
sparc64$ pwd
/opt/bw/build/openssh-9.9p2_SunOS_5.10_SPARC64.003
sparc64$ date -u
Sat Mar  1 03:07:19 GMT 2025
sparc64$ ../openssh-9.9p2/configure --prefix=/opt/bw --disable-strip \
> --with-zlib=/opt/bw --with-ssl-dir=/opt/bw \
> --with-xauth=/usr/openwin/bin/xauth \
> --with-ipaddr-display 2>&1 | tee `pwd`.config.log
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... no
checking whether /opt/developerstudio12.6/bin/cc accepts -g... yes
checking for /opt/developerstudio12.6/bin/cc option to enable C11 features... none needed checking if /opt/developerstudio12.6/bin/cc supports C99-style variadic macros... yes
configure: error: cannot run /opt/bw/bin/bash ../openssh-9.9p2/config.sub
sparc64$

sparc64$
sparc64$ /opt/bw/bin/bash --version
GNU bash, version 5.2.32(2)-release (sparc-sun-solaris2.10)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sparc64$

Not sure what the problem is this time.

However I can add that popc is an opcode for all reasonably modern SPARC
hardware in the last fifteen to twenty years. We really do not need the
GCC intrinsic/builtin to get a popcount. A trivial opcode gets the job
done :

sparc64$
sparc64$ /usr/local/gcc8/bin/gcc --version
gcc (genunix Fri May 11 08:23:40 GMT 2018) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

sparc64$
sparc64$ cat bob.c

/* someone suggested we look at whatever the compiler
 * knows about this thing */

int answer(unsigned int x) {
    return __builtin_popcount(x);
}


sparc64$
sparc64$ /usr/local/gcc8/bin/gcc -std=iso9899:1999 -m64 -O0 \
> -mno-app-regs -mcpu=v9 -mtune=v9 -mno-vis -fno-builtin -mpopc \
> -D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=600 -S -o bob_sparc64.s bob.c
sparc64$
sparc64$ cat bob_sparc64.s
        .file   "bob.c"
        .section        ".text"
        .align 4
        .global answer
        .type   answer, #function
        .proc   04
answer:
        save    %sp, -176, %sp
        mov     %i0, %g1
        st      %g1, [%fp+2175]
        ld      [%fp+2175], %g1
        srl     %g1, 0, %g1
        popc    %g1, %g1
        sra     %g1, 0, %g1
        mov     %g1, %i0
        return  %i7+8
         nop
        .size   answer, .-answer
        .ident  "GCC: (genunix Fri May 11 08:23:40 GMT 2018) 8.1.0"
sparc64$
sparc64$ /usr/local/gcc8/bin/gcc -std=iso9899:1999 -m64 -O2 \
> -mno-app-regs -mcpu=v9 -mtune=v9 -mno-vis -fno-builtin -mpopc \
> -D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=600 -S -o bob_sparc64.s bob.c
sparc64$
sparc64$ cat bob_sparc64.s
        .file   "bob.c"
        .section        ".text"
        .align 4
        .global answer
        .type   answer, #function
        .proc   04
answer:
        jmp     %o7+8
         popc   %o0, %o0
        .size   answer, .-answer
        .ident  "GCC: (genunix Fri May 11 08:23:40 GMT 2018) 8.1.0"
sparc64$

Really some inline ASM would get this done.

I am looking into that.



--
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken
_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@xxxxxxxxxxx
https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev



[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux