By a process of elimination, this problem occurs on both core2 and
k10, so it must be one of the following:

 U    cpuid.c
 U    mpn/x86_64/k8/k10/karasub.asm
 U    mpn/x86_64/core2/karasub.asm
 U    mpn/asm-defs.m4
 U    config.in
 U    configure.in
 U    gmp-h.in
 U    acinclude.m4
 U    Makefile.am

But we can exclude acinclude.m4 as this was the test for a broken gcc
4.3.2, which is not relevant.

We can exclude cpuid.c as this is cpu detection for sandybridge and atom.

We can exclude the karasub.asm files as these just define new versions
of karatsuba.

That leaves:

 U    mpn/asm-defs.m4
 U    config.in
 U    configure.in
 U    gmp-h.in
 U    Makefile.am

Looking through, this change in configure.in looks suspicious:

-           sed -n 's/[^G]*GLOBAL_FUNC[:space:]*\(.*\)/\1/p' $tmp_file
+            sed -n 's/^;[      ]*PROLOGUE(\([^,]*\).*)/\1/p' $tmp_file ;

It looks like all the yasm files use GLOBAL_FUNC and all the gas files
use PROLOGUE, so I don't completely understand this change. It might
be correct.

Most of the other files that have changed have changes to something
relating to redc_2, which does show up in the error message. But it
can't explain both problems.

Anyhow, going back to the original error message, there is a file
mpn/generic/preinv_divrem_1.c which defines a symbol
mpn_preinv_divrem_1, which is guarded with:

#if USE_PREINV_DIVREM_1

But then we have:

[wbhart@eno mpir-exp]$ grep GLOBAL_FUNC mpn/divrem_euclidean_qr_1.as
GLOBAL_FUNC mpn_preinv_divrem_1
GLOBAL_FUNC mpn_divrem_euclidean_qr_1

In mpn/generic/redc_2.c we have:

#ifndef HAVE_NATIVE_mpn_addmul_2
mp_limb_t
mpn_addmul_2 (mp_ptr rp, mp_srcptr up, mp_size_t n, mp_srcptr vp)
{
  rp[n] = mpn_addmul_1 (rp, up, n, vp[0]);
  return mpn_addmul_1 (rp + 1, up, n, vp[1]);
}
#endif

But then we have:

[wbhart@eno mpir-exp]$ grep GLOBAL_FUNC mpn/addmul_2.as
        GLOBAL_FUNC mpn_addmul_2

So it looks to me like this fix in configure.in is correct, but it
causes two other bugs (symbols defined when they shouldn't be) to show
up.

So we need to figure out how to set USE_PREINV_DIVREM_1 to 0 when it
is supposed to be and to define HAVE_NATIVE_mpn_addmul_2 when it is
supposed to be.

This is where we need Jason to jump in and say he knows how to fix the
problem....

Bill.

On 28 July 2012 01:05, Bill Hart <goodwillh...@googlemail.com> wrote:
> Nope, autoconf and automake didn't do anything.
>
> The problem must lie in one of the following files:
>
> U    Makefile.in
> U    cpuid.c
> U    mpn/x86_64w/fat/fat_entry.asm
> U    mpn/powerpc64/gmp-mparam.h
> U    mpn/x86_64/k8/karasub.asm
> U    mpn/x86_64/k8/k10/karasub.asm
> U    mpn/x86_64/bobcat/karasub.asm
> A    mpn/x86_64/bobcat/redc_1.as
> U    mpn/x86_64/sandybridge/karasub.asm
> A    mpn/x86_64/sandybridge/redc_1.as
> U    mpn/x86_64/atom/karasub.asm
> U    mpn/x86_64/netburst/karasub.asm
> U    mpn/x86_64/nehalem/karasub.asm
> U    mpn/x86_64/core2/karasub.asm
> U    mpn/asm-defs.m4
> U    devel/setversion
> U    doc/mpir.info-1
> U    doc/mpir.texi
> U    doc/mpir.info-2
> U    doc/mpir.info
> U    doc/stamp-vti
> U    doc/version.texi
> U    config.in
> U    NEWS
> U    configure.in
> U    configure
> U    tests/mpn/t-addadd_n.c
> U    tests/mpn/t-addsub_n.c
> U    tests/mpn/t-subadd_n.c
> U    tests/devel/try.c
> U    gmp-h.in
> U    acinclude.m4
> U    Makefile.am
>  U   .
>
> In fact, the issue seems to occur at the final linking stage, not when
> linking the mpn archive.
>
> Bill.
>
> On 28 July 2012 00:55, Bill Hart <goodwillh...@googlemail.com> wrote:
>> In fact, the problem already occurs in the mpir-exp branch. So this
>> must be the result of a merge conflict from trunk to mpir-exp.
>>
>> Bill.
>>
>> On 28 July 2012 00:50, Bill Hart <goodwillh...@googlemail.com> wrote:
>>> Unfortunately the merge doesn't seem to have gone without issue. When
>>> I try to build on linux now it configures ok, but I get the following
>>> when it tries to link the mpn archive during the build:
>>>
>>> mpn/.libs/preinv_divrem_1.o: In function `__gmpn_preinv_divrem_1':
>>> preinv_divrem_1.c:(.text+0x0): multiple definition of 
>>> `__gmpn_preinv_divrem_1'
>>> mpn/.libs/divrem_euclidean_qr_1.o:divrem_euclidean_qr_1.as:(.text+0x0):
>>> first defined here
>>> mpn/.libs/addmul_2.o: In function `mpn_addmul_2':
>>> addmul_2.as:(.text+0x0): multiple definition of `__gmpn_addmul_2'
>>> mpn/.libs/redc_2.o:redc_2.c:(.text+0x0): first defined here
>>> collect2: ld returned 1 exit status
>>> make[2]: *** [libmpir.la] Error 1
>>> make[2]: Leaving directory `/home/wbhart/mpir-new'
>>> make[1]: *** [all-recursive] Error 1
>>> make[1]: Leaving directory `/home/wbhart/mpir-new'
>>> make: *** [all] Error 2
>>>
>>> There's no obvious reason for this, other than non-commuting patches
>>> which have maybe screwed up a makefile or something. I'll try running
>>> autoconf and automake again and see if it sorts itself out.
>>>
>>> Bill.
>>>
>>> On 27 July 2012 14:34, Brian Gladman <b...@gladman.plus.com> wrote:
>>>> -----Original Message----- From: Brian Gladman
>>>> Sent: Friday, July 27, 2012 11:39 AM
>>>>
>>>> To: mpir-devel@googlegroups.com
>>>> Subject: Re: [mpir-devel] Re: MPIR 2.6 release progress
>>>>
>>>> -----Original Message----- From: Bill Hart
>>>> Sent: Thursday, July 26, 2012 10:40 PM
>>>> To: mpir-devel@googlegroups.com
>>>> Subject: Re: [mpir-devel] Re: MPIR 2.6 release progress
>>>>
>>>> Doing things manually risks overwriting changes that have been made in
>>>> trunk and may be error prone. We'd also lose the original commit data.
>>>>
>>>> I don't like the idea of doing it without a proper merge.
>>>>
>>>> =================================
>>>> I have done the merge from trunk into the mpir-exp branch and all is well 
>>>> on
>>>> Windows.
>>>>
>>>> Most of the stuff that SVN reported was spurious as far as I can see.
>>>>
>>>> But we now have a potentially nasty problem - in testing the merge from
>>>> MPIR-EXP into trunk, I get the message:
>>>>
>>>> Error: Querying mergeinfo requires version 3 of the FSFS filesystem schema;
>>>> filesystem
>>>> Error:  '/home/mpir/svn_repos/mpir/db' uses only version 2
>>>>
>>>> On googling, I find that solving this problem seems to require a Subversion
>>>> upgrade on the server followed by a repository dump and reload.
>>>>
>>>> If we cannot organise this upgrade (which I assume won't be easy or quick
>>>> since there are likely to be many SVN users impacted by it), we will have 
>>>> to
>>>> revert to adding the changes in MPIR-EXP to the trunk manually as I
>>>> suggested yesterday.
>>>>
>>>> What is your view on this Bill?
>>>>
>>>> ====================================
>>>> I have now figured out how to the merge without mergeinfo and I have merged
>>>> the mpir-exp branch into the trunk.
>>>>
>>>> The Windows Visual Studio builds are working so I would much appreciate it
>>>> if Case can look at the Windows command line build and Bill can look at the
>>>> *nix builds to see if anything needs doing.
>>>>
>>>>
>>>>   Brian
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google Groups
>>>> "mpir-devel" group.
>>>> To post to this group, send email to mpir-devel@googlegroups.com.
>>>> To unsubscribe from this group, send email to
>>>> mpir-devel+unsubscr...@googlegroups.com.
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/mpir-devel?hl=en.
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-devel@googlegroups.com.
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en.

Reply via email to