[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1209610 - /subversion/trunk/subversion/libsvn_subr/debug.c

From: Daniel Shahaf <danielsh_at_elego.de>
Date: Sat, 7 Jan 2012 01:12:39 +0200

And a bit of background...

build/generator/extractor.py is a file used by gen-make.py on Windows to
construct the list of functions that the DLL's export. That file is not
aware of C preprocessor macros, so functions that are #define'd away on
Windows must be explicitly excepted in it.

r1209610 added another instance of "functions whose declerations are
#define'd away", but failed to update the exceptions list. The fallout
is that extractor.py includes those functions in the list of exported
symbols, but the compiler doesn't see their definitions, and
consequently linking fails since the to-be-exported symbol doesn't
exist in the object file.

Johan Corveleyn wrote on Fri, Jan 06, 2012 at 23:50:02 +0100:
> On Fri, Jan 6, 2012 at 2:45 AM, Daniel Shahaf <d.s_at_daniel.shahaf.name> wrote:
> > Johan Corveleyn wrote on Fri, Jan 06, 2012 at 02:12:15 +0100:
> >> On Fri, Dec 2, 2011 at 7:04 PM,  <hwright_at_apache.org> wrote:
> >> > Author: hwright
> >> > Date: Fri Dec  2 18:04:14 2011
> >> > New Revision: 1209610
> >> >
> >> > URL: http://svn.apache.org/viewvc?rev=1209610&view=rev
> >> > Log:
> >> > Fix builds where SVN_DEBUG is not defined.
> >> >
> >> > * subversion/libsvn_subr/debug.c:
> >> >  Don't build any of this file if SVN_DEBUG isn't defined.  Callers don't have
> >> >  access to it in that case, anyway.
> >>
> >> For some reason, after this commit my *Release* build on Windows (VCE
> >> 2008) fails with:
> >>
> >> libsvn_subr.def : error LNK2001: unresolved external symbol svn_dbg__preamble
> >> libsvn_subr.def : error LNK2001: unresolved external symbol svn_dbg__print_props
> >> libsvn_subr.def : error LNK2001: unresolved external symbol svn_dbg__printf
> >> ..\..\..\Release\subversion\libsvn_subr\libsvn_subr-1.lib : fatal
> >> error LNK1120: 3 unresolved externals
> >>
> >> I've been trying to understand why, but I don't. Maybe something to do
> >> with preprocessors and linkers ... but my C compilation knowledge is
> >> lacking here :-).
> >>
> >> Is any of the other Windows devs seeing this?
> >>
> >> A Debug build still works, so if SVN_DEBUG is defined everything's ok.
> >> I guess that's also the reason why the buildbots don't see this
> >> problem (I guess they perform Debug-builds).
> >>
> > Does adding those three functions to the exceptions list in
> > build/generator/extractor.py fix the release build (and break the
> > debug build)?
>
> Yes.
>
> Release build works.
>
> Debug build fails with:
>
> libsvn_ra_local-1.lib(ra_plugin.obj) : error LNK2019: unresolved
> external symbol _svn_dbg__printf referenced in function
> _ignore_warnings
> libsvn_ra_local-1.lib(ra_plugin.obj) : error LNK2019: unresolved
> external symbol _svn_dbg__preamble referenced in function
> _ignore_warnings
> ..\..\..\Debug\subversion\libsvn_ra\libsvn_ra-1.dll : fatal error
> LNK1120: 2 unresolved externals
>
>
> Any ideas on how to fix this?
>
> Has anyone been able to make a Release build on Windows since this commit?
>
> --
> Johan
Received on 2012-01-07 00:13:27 CET

This is an archived mail posted to the Subversion Dev mailing list.