[PATCH] Improve and consolidate sparc PIC assembler.

Torbjorn Granlund tg at gmplib.org
Sun Apr 14 01:41:13 CEST 2013

David Miller <davem at davemloft.net> writes:

  Try this, declare the table as:
          .section        ".rodata"
  	.type		ctz_table,#object
That gets us longer, indeed!

But now make check fails.  At least some symmetry between the 64-bit and
32-bit Solaris builds.  :-)

/NOBACKUP/tege/prec/gmp-snap/tests/mpn/t-fat.c:157: GNU MP assertion failed: r == 3
/bin/bash: line 5: 25440 Abort                   ${dir}$tst
FAIL: t-fat

>_mp_size) == 0 || ((got)->_mp_d)[((((got)->_mp_size)) >= 0 ? (((got)->_mp_size)) : -(((got)->_mp_size))) - 1] != 0
/bin/bash: line 5:   291 Abort                   ${dir}$tst
FAIL: t-gcd
/bin/bash: line 5:   326 Arithmetic Exception    ${dir}$tst
FAIL: t-lcm
1/400 passes/NOBACKUP/tege/prec/gmp-snap/tests/mpz/reuse.c:294: GNU MP assertion failed: ((ref1)->_mp_size) == 0 || ((ref1)->_mp_d)[((((ref1)->_mp_size)) >= 0 ? (((ref1)->_mp_size)) : -(((ref1)->_mp_size))) - 1] != 0
/bin/bash: line 5:   570 Abort                   ${dir}$tst
FAIL: reuse
mpz_perfect_power_p returns 0 when 1 was expected
fault operand: -0x30a7a6000
/bin/bash: line 5:   620 Abort                   ${dir}$tst
FAIL: t-perfpow
mpz_kronecker_ui (4398012956736, 85) is 1 should be 0
/bin/bash: line 5:   638 Abort                   ${dir}$tst

All tests fail.

  Because I'm beginning to suspect that the linker isn't lying to us,
  and the assembler is emitting ctz_table in section STT_TLS for some
  And that this has been happening all along.  Perhaps if you don't
  declare an object's type it gets some default, and in this case the
  default ends up being #tlsobject.
Presumably this was never the intended assember behaviour.

  If this is the case, it's simple to deal with this this by simply
  using ".type" directive consistently.
  I can do all of the grunt work once you confirm this.
I haven't really tried to understand the situation, but I would at least
like to understand why the PIC/LEA changes caused to much regression.

Or put differently: Why did things use to work before the improvements?


More information about the gmp-devel mailing list