Need help with autoconf

Started by Magnus Haganderalmost 19 years ago7 messageshackers
Jump to latest
#1Magnus Hagander
magnus@hagander.net

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#1)
Re: Need help with autoconf

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

#3Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#2)
Re: Need help with autoconf

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

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#3)
Re: Need help with autoconf

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

#5Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#4)
Re: Need help with autoconf

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

Attachments:

krb5_free.difftext/plain; charset=us-asciiDownload+83-1
#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#5)
Re: Need help with autoconf

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

#7Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#6)
Re: Need help with autoconf

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