Thread: Need help with autoconf

Need help with autoconf

From
Magnus Hagander
Date:
Hi!

I'm trying to write an autoconf macro to figure out if the function
krb5_free_unparsed_name exists (because it exists in MIT but not Heimdal),
to fix a rather nasty bug in our Kerberos implementation.

However, I'm failing :(

I'm simply using
AC_CHECK_FUNC([krb5_free_unparsed_name])

which works fine on unix, but breaks on win32. Because autoconf tries the
function with no parameters, which doesn't work due to win32 decorations.
The function is declared in krb5.h - is there some way to make autoconf
load that header file and use the declaration from there?

(If I manually set HAVE_KRB5_FREE_UNPARSED_NAME, I can perfectly well *use*
the function as long as I put the correct number of arguments in there)

//Magnus



Re: Need help with autoconf

From
Tom Lane
Date:
Magnus Hagander <magnus@hagander.net> writes:
> I'm simply using
> AC_CHECK_FUNC([krb5_free_unparsed_name])
> which works fine on unix, but breaks on win32. Because autoconf tries the
> function with no parameters, which doesn't work due to win32 decorations.

Doesn't work why?  We have dozens of other functions we check for
without needing any special windoze hacks.  Is it a macro?
        regards, tom lane


Re: Need help with autoconf

From
Magnus Hagander
Date:
Tom Lane wrote:
> Magnus Hagander <magnus@hagander.net> writes:
>> I'm simply using
>> AC_CHECK_FUNC([krb5_free_unparsed_name])
>> which works fine on unix, but breaks on win32. Because autoconf tries the
>> function with no parameters, which doesn't work due to win32 decorations.
> 
> Doesn't work why?  We have dozens of other functions we check for
> without needing any special windoze hacks.  Is it a macro?

No, it actually depends on how the library is compiled. Functions can
either be exported decorated or not. This one is exported decorated.
Also, if it just checks for a function with zero arguments, decorated
and non-decorated look the same.

//magnus


Re: Need help with autoconf

From
Tom Lane
Date:
Magnus Hagander <magnus@hagander.net> writes:
> Tom Lane wrote:
>> Magnus Hagander <magnus@hagander.net> writes:
>>> I'm simply using
>>> AC_CHECK_FUNC([krb5_free_unparsed_name])
>>> which works fine on unix, but breaks on win32. Because autoconf tries the
>>> function with no parameters, which doesn't work due to win32 decorations.
>> 
>> Doesn't work why?  We have dozens of other functions we check for
>> without needing any special windoze hacks.  Is it a macro?

> No, it actually depends on how the library is compiled. Functions can
> either be exported decorated or not. This one is exported decorated.

It's still not apparent to me how this function is different from every
other one we check for; but I'd suggest you write a check that looks
like the ones we use for functions that might be macros, eg sigsetjmp.
        regards, tom lane


Re: Need help with autoconf

From
Magnus Hagander
Date:
On Wed, Jul 11, 2007 at 01:41:56PM -0400, Tom Lane wrote:
> Magnus Hagander <magnus@hagander.net> writes:
> > Tom Lane wrote:
> >> Magnus Hagander <magnus@hagander.net> writes:
> >>> I'm simply using
> >>> AC_CHECK_FUNC([krb5_free_unparsed_name])
> >>> which works fine on unix, but breaks on win32. Because autoconf tries the
> >>> function with no parameters, which doesn't work due to win32 decorations.
> >>
> >> Doesn't work why?  We have dozens of other functions we check for
> >> without needing any special windoze hacks.  Is it a macro?
>
> > No, it actually depends on how the library is compiled. Functions can
> > either be exported decorated or not. This one is exported decorated.
>
> It's still not apparent to me how this function is different from every
> other one we check for; but I'd suggest you write a check that looks
> like the ones we use for functions that might be macros, eg sigsetjmp.

Thanks for the pointer. Attached is what I came up with. If someone
autoconfy can sign off on that it seems correct, I'll apply that.

(It passes my tests on both linux and win32 now..)

//Magnus

Attachment

Re: Need help with autoconf

From
Tom Lane
Date:
Magnus Hagander <magnus@hagander.net> writes:
> Thanks for the pointer. Attached is what I came up with. If someone
> autoconfy can sign off on that it seems correct, I'll apply that.

Looks reasonable to me.
        regards, tom lane


Re: Need help with autoconf

From
Magnus Hagander
Date:
On Thu, Jul 12, 2007 at 09:54:28AM -0400, Tom Lane wrote:
> Magnus Hagander <magnus@hagander.net> writes:
> > Thanks for the pointer. Attached is what I came up with. If someone
> > autoconfy can sign off on that it seems correct, I'll apply that.
> 
> Looks reasonable to me.

Thanks, applied and backpatched to 8.2.

I didn't backpatch past 8.2, since I've only seen the bug affecting Windows
systems. Though it's actually incorrect code in 8.1 and earlier as well, I
figured we'd better leave it alone for now.

//Magnus