On Fri, 12 Feb 2016, Konstantin Belousov wrote:

On Fri, Feb 12, 2016 at 01:22:04PM +0000, Ruslan Bukin wrote:
On RISC-V it fails with __uint128_t:

struct fpregs {
        __uint128_t     fp_x[32];

how to fix?
You did not copied the error.

If my guess is correct, the issue is that __uint128_t typedef is not
present in the riscv/include/_types.h.  Either add the type there, or
use e.g. __uint64_t fp_x[32][2]; for the member definition.

__uint128_t is defined by newer compilers.  Declaring it as a typedef
would probably be a syntax error.

BTW, uintmax_t on riscv is defined as uint64.

Same on all arches.

Any normal use of __uintmax_t breaks uintmax_t since uintmax_t is
supposed to be the largest integer type, but it is ony 64 bits on all
supported arches, bu __uint128_t is larger.  printf() doesn't support
printing __uint128_t...

Expansion of uintmax_t to make __uint128_t, __uint256_t, __uint512_t, ...
more useful would mainly give bloat and break ABIs.

P.S. Does it also mean that the tinderbox machines (AKA universe11*)
do not have riscv toolchain installed ?  I did run make tinderbox
before the commit.

Well, I missed it and only saw __uint128_t in the arm header since
riscv is too new for freefall to have it checked out, and I didn't
rememeber that so I didn't look at another checkout.

Looking at another checkout now shows the following namespace errors
in riscv/include/ucontext.h (mostly the same as arm64):

    grpregs, gp_*
    fp_regs, fp_*
    pad (not the usual __spare__ bogusness.  Such fields are closer to
      being padding than spares.  Of course, padding can be used as
      spares.)

Bruce
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to