public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Andrew DeFaria <Andrew@DeFaria.com>
To: cygwin@cygwin.com
Subject: Re: Building cpan module that links with proprietary libs
Date: Thu, 29 May 2014 20:34:00 -0000	[thread overview]
Message-ID: <lm7rtc$ofg$1@ger.gmane.org> (raw)
In-Reply-To: <CAEhDDbCjo_wO7xP9i9rfgqM82Z6h+bL0HDrV8bxwtbUryV=pNg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3866 bytes --]

On 5/29/2014 1:29 AM, Csaba Raduly wrote:
> Hi Andrew,
>
> On Thu, May 29, 2014 at 4:12 AM, Andrew DeFaria  wrote:
>> I'm attempting to build a cpan module (well actually it's not a cpan module
>> but rather a module that uses MakeMaker and has the familiar perl
>> Makefile.PL, make, make test, make install installation procedure.
>> Additionally I need to link it to a set of proprietary libs that I am given
>> only the .lib files for. If you must know this is for Perforce's P4Perl
>> which I'd like to get working with Cygwin's Perl natively.
>>
>> I download the P4API bundle (the package that has include files and the .lib
>> files pre-compiled).
>
> The C++ P4 API is platform-specific; which platform did you choose?
> If it really contains .lib files (not .a), those are not recognized by
> Cygwin's gcc.

I had two archives two choose from. One was for Windows and contained 
the .lib files. The other was for Linux and contains .a files. I first 
tried the Linux one but that failed with:

g++  -shared P4.o  -o blib/arch/auto/P4/P4.dll lib/libp4.a      \
   /usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE/cygperl5_14.dll 
-L/cygdrive/a/p4perlBuild/p4api/lib -lclient -lrpc -lsupp -lp4sslstub 
        \

collect2: error: ld terminated with signal 11 [Segmentation fault], core 
dumped
Makefile:531: recipe for target 'blib/arch/auto/P4/P4.dll' failed
make: *** [blib/arch/auto/P4/P4.dll] Error 1
Adefaria-lt:

I can give you more output if you need it.

Then I switched to the Windows archive that contained the .lib files.

I think the issue is that their Windows P4Perl build system uses Visual 
Studio to build and on Linux it uses g++. Their installation package is 
only for ActiveState. Supposedly at 5.18 ActiveState is changing to a 
g++ based backend using MingW I think so they'll eventually have to 
figure this out. Meantime I'm just trying to get it working under 
Cygwin's Perl...

>> Next I need to do:
>>
>> $ perl Makefile.PL --api-dir /.../path/to/unzipped/p4api
>>
>> This works fine and I procedure with the make. This fails with things like:
>>
>> make[1]: Leaving directory '/cygdrive/a/perl/P4Perl.Cygwin/lib'
>> g++ -c  -I/cygdrive/a/perl/p4api.windows/include/p4 -Ilib -x c++
>> -DUSEIMPORTLIB -O3   -DVERSION=\"2014.1\" -DXS_VERSION=\"2014.1\"
>> "-I/usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE"
>> -DID_OS="\"CYGWIN17THREAD\"" -DID_REL="\"2014.1\"" -DID_PATCH="\"842847\""
>> -DID_Y="\"2014\"" -DID_M="\"05\"" -DID_D="\"06\"" -DOS_CYGWIN -DOS_CYGWIN17
>> -DOS_CYGWIN17THREAD -DOS_CYGWINTHREAD -DP4API_VERSION="515585"
>> -DID_API="\"2014.1/821990\"" P4.c
>> Running Mkbootstrap for P4 ()
>> chmod 644 P4.bs
>> rm -f blib/arch/auto/P4/P4.dll
>> g++  -shared P4.o  -o blib/arch/auto/P4/P4.dll lib/libp4.a      \
>>    /usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE/cygperl5_14.dll        \
>>
>> P4.o:P4.c:(.text+0x45ac): undefined reference to `ClientApi::SetClient(char
>> const*)'
>> P4.o:P4.c:(.text+0x45ac): relocation truncated to fit: R_X86_64_PC32 against
>> undefined symbol `ClientApi::SetClient(char const*)'
>> P4.o:P4.c:(.text+0x4a9c): undefined reference to `ClientApi::SetHost(char
>> const*)'
>>
>> Notice that it removes P4.dll, so it seems to know it's working with dll's,
>> but then it calls g++ with a -o for libp4.a!
>
> No it doesn't. The argument to -o is blib/arch/auto/P4/P4.dll
> lib/libp4.a is the next input file.

Good catch! I missed that.

 > What does the following say?
>
> nm lib/libp4.a | c++filt

Attached.

>> Meantime it fails with many undefined references. I think I might need to do
>> perl Makefile.PL with other opts to tell it that while it's using Cygwin and
>> can be very Linux-like, it needs to produce .dll's and not .a's or .o's.
>
> It seems to be on the right track; "g++ -shared -o P4.dll" sounds good to me.

Thanks for your help.
-- 
Andrew DeFaria
http://defaria.com

[-- Attachment #2: nm.libp4.a.out --]
[-- Type: text/plain, Size: 32798 bytes --]


p4actionmerge.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 t .text
0000000000000000 r .xdata
                 U Perl_newSVpv
                 U _Unwind_Resume
0000000000000350 T P4ActionMergeData::GetMergeHint()
0000000000000080 T P4ActionMergeData::GetMergeInfo()
0000000000000140 T P4ActionMergeData::GetYourAction()
0000000000000090 T P4ActionMergeData::GetMergeAction()
00000000000001f0 T P4ActionMergeData::GetTheirAction()
00000000000002a0 T P4ActionMergeData::GetType()
0000000000000380 T P4ActionMergeData::GetString()
0000000000000000 T P4ActionMergeData::P4ActionMergeData(ClientUser*, ClientResolveA*, StrPtr&, sv*)
0000000000000000 T P4ActionMergeData::P4ActionMergeData(ClientUser*, ClientResolveA*, StrPtr&, sv*)
                 U StrBuf::nullStrBuf
                 U StrBuf::Append(StrPtr const*)
                 U StrBuf::Append(char const*)
                 U Error::Fmt(StrBuf&, int) const
                 U operator delete[](void*)
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U pthread_getspecific

p4clientprogress.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 p .pdata$_ZN14ClientProgressD0Ev
0000000000000000 p .pdata$_ZN14ClientProgressD1Ev
0000000000000000 r .rdata$_ZTI14ClientProgress
0000000000000000 r .rdata$_ZTI16P4ClientProgress
0000000000000000 r .rdata$_ZTS14ClientProgress
0000000000000000 r .rdata$_ZTS16P4ClientProgress
0000000000000000 r .rdata$_ZTV14ClientProgress
0000000000000000 r .rdata$_ZTV16P4ClientProgress
0000000000000000 r .rdata$zzz
0000000000000000 t .text
0000000000000000 t .text$_ZN14ClientProgressD0Ev
0000000000000000 t .text$_ZN14ClientProgressD1Ev
0000000000000000 r .xdata
0000000000000000 r .xdata$_ZN14ClientProgressD0Ev
0000000000000000 r .xdata$_ZN14ClientProgressD1Ev
0000000000000000 T ClientProgress::~ClientProgress()
0000000000000000 T ClientProgress::~ClientProgress()
0000000000000010 T P4ClientProgress::Description(StrPtr const*, int)
0000000000000040 T P4ClientProgress::Done(int)
0000000000000080 T P4ClientProgress::Init(int)
0000000000000020 T P4ClientProgress::Total(long)
0000000000000030 T P4ClientProgress::Update(long)
0000000000000060 T P4ClientProgress::P4ClientProgress(sv*, int)
0000000000000060 T P4ClientProgress::P4ClientProgress(sv*, int)
0000000000000050 T P4ClientProgress::~P4ClientProgress()
0000000000000000 T P4ClientProgress::~P4ClientProgress()
0000000000000000 T P4ClientProgress::~P4ClientProgress()
0000000000000000 R typeinfo for ClientProgress
0000000000000000 R typeinfo for P4ClientProgress
0000000000000000 R typeinfo name for ClientProgress
0000000000000000 R typeinfo name for P4ClientProgress
0000000000000000 R vtable for ClientProgress
0000000000000000 R vtable for P4ClientProgress
                 U vtable for __cxxabiv1::__class_type_info
                 U vtable for __cxxabiv1::__si_class_type_info
                 U operator delete(void*)
                 U __cxa_pure_virtual
                 U __real__ZdlPv

p4mapmaker.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 t .text
0000000000000000 r .xdata
                 U Perl_av_push
                 U Perl_newSV_type
                 U Perl_newSVpv
                 U Perl_sv_2pv_flags
                 U _Unwind_Resume
0000000000000ec0 T P4MapMaker::SplitMapping(StrPtr const&, StrBuf&, StrBuf&)
0000000000000820 T P4MapMaker::Lhs()
00000000000009c0 T P4MapMaker::Rhs()
0000000000000b20 T P4MapMaker::ToA()
0000000000000d30 T P4MapMaker::Dump()
00000000000001e0 T P4MapMaker::Join(P4MapMaker*, P4MapMaker*)
00000000000005e0 T P4MapMaker::Clear()
00000000000005d0 T P4MapMaker::Count()
0000000000001050 T P4MapMaker::Insert(sv*)
0000000000000270 T P4MapMaker::Insert(sv*, sv*)
00000000000005f0 T P4MapMaker::Reverse()
00000000000006a0 T P4MapMaker::Translate(sv*, int)
0000000000000070 T P4MapMaker::P4MapMaker(P4MapMaker const&)
0000000000000000 T P4MapMaker::P4MapMaker()
0000000000000070 T P4MapMaker::P4MapMaker(P4MapMaker const&)
0000000000000000 T P4MapMaker::P4MapMaker()
0000000000000040 T P4MapMaker::~P4MapMaker()
0000000000000040 T P4MapMaker::~P4MapMaker()
                 U MapApi::Join(MapApi*, MapDir, MapApi*, MapDir)
                 U MapApi::Clear()
                 U MapApi::Count()
                 U MapApi::Insert(StrPtr const&, StrPtr const&, MapType)
                 U MapApi::GetLeft(int)
                 U MapApi::GetType(int)
                 U MapApi::GetRight(int)
                 U MapApi::Translate(StrPtr const&, StrBuf&, MapDir)
                 U MapApi::MapApi()
                 U MapApi::~MapApi()
                 U StrBuf::nullStrBuf
                 U StrBuf::Grow(unsigned int)
                 U StrBuf::Append(StrPtr const*)
                 U StrBuf::Append(char const*)
                 U operator delete[](void*)
                 U operator delete(void*)
                 U operator new(unsigned long)
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U __real__ZdlPv
                 U __real__Znwm
                 U pthread_getspecific
                 U strchr
                 U strlen

p4mergedata.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 t .text
0000000000000000 r .xdata
                 U Perl_newSVpv
                 U _Unwind_Resume
00000000000001e0 T P4MergeData::GetBaseName()
00000000000002d0 T P4MergeData::GetBasePath()
0000000000000180 T P4MergeData::GetYourName()
0000000000000210 T P4MergeData::GetYourPath()
00000000000003b0 T P4MergeData::GetMergeHint()
00000000000001b0 T P4MergeData::GetTheirName()
0000000000000260 T P4MergeData::GetTheirPath()
00000000000003e0 T P4MergeData::RunMergeTool()
0000000000000340 T P4MergeData::GetResultPath()
00000000000004e0 T P4MergeData::GetString()
0000000000000000 T P4MergeData::P4MergeData(ClientUser*, ClientMerge*, StrPtr&)
0000000000000000 T P4MergeData::P4MergeData(ClientUser*, ClientMerge*, StrPtr&)
                 U Error::~Error()
                 U StrBuf::nullStrBuf
                 U StrBuf::Append(StrPtr const*)
                 U StrBuf::Append(char const*)
                 U StrDict::GetVar(char const*)
                 U operator delete[](void*)
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U pthread_getspecific

p4result.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN5P4Tag8l_clientE
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN5P4Tag8l_clientE
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 t .text
0000000000000000 r .xdata
                 U PerlIO_stdoutf
                 U Perl_av_clear
                 U Perl_av_len
                 U Perl_av_push
                 U Perl_av_undef
                 U Perl_gv_stashpv
                 U Perl_newRV_noinc
                 U Perl_newSV_type
                 U Perl_newSViv
                 U Perl_newSVpv
                 U Perl_sv_2mortal
                 U Perl_sv_bless
                 U _Unwind_Resume
                 U Error::operator=(Error const&)
                 U P4Tag::l_client
                 U StrBuf::nullStrBuf
0000000000000330 T P4Result::AddMessage(Error*)
00000000000005f0 T P4Result::ErrorCount()
0000000000000650 T P4Result::TrackCount()
0000000000000540 T P4Result::DeleteTrack()
00000000000005c0 T P4Result::OutputCount()
0000000000000620 T P4Result::WarningCount()
0000000000000000 T P4Result::Init()
0000000000000160 T P4Result::Clear()
0000000000000240 T P4Result::Reset()
0000000000000570 T P4Result::AddTrack(sv*)
00000000000004e0 T P4Result::AddTrack(char const*)
00000000000002e0 T P4Result::AddOutput(sv*)
00000000000001f0 T P4Result::GetOutput()
00000000000000a0 T P4Result::P4Result()
00000000000000a0 T P4Result::P4Result()
00000000000000d0 T P4Result::~P4Result()
00000000000000d0 T P4Result::~P4Result()
                 U Error::Fmt(StrBuf&, int) const
                 U operator delete[](void*)
                 U operator new(unsigned long)
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U __real__Znwm
                 U atoi
                 U pthread_getspecific

p4specdata.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 p .pdata$_ZN12SpecDataPerlD0Ev
0000000000000000 p .pdata$_ZN12SpecDataPerlD1Ev
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$.refptr._ZTV8SpecData
0000000000000000 r .rdata$_ZTI12SpecDataPerl
0000000000000000 r .rdata$_ZTI8SpecData
0000000000000000 r .rdata$_ZTS12SpecDataPerl
0000000000000000 r .rdata$_ZTS8SpecData
0000000000000000 r .rdata$_ZTV12SpecDataPerl
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 R .refptr._ZTV8SpecData
0000000000000000 t .text
0000000000000000 t .text$_ZN12SpecDataPerlD0Ev
0000000000000000 t .text$_ZN12SpecDataPerlD1Ev
0000000000000000 r .xdata
0000000000000000 r .xdata$_ZN12SpecDataPerlD0Ev
0000000000000000 r .xdata$_ZN12SpecDataPerlD1Ev
                 U Perl_av_fetch
                 U Perl_av_store
                 U Perl_hv_common_key_len
                 U Perl_newRV_noinc
                 U Perl_newSV_type
                 U Perl_newSVpv
                 U Perl_sv_2pv_flags
                 U Perl_warn_nocontext
                 U _Unwind_Resume
0000000000000000 T SpecDataPerl::GetLine(SpecElem*, int, char const**)
00000000000001a0 T SpecDataPerl::SetLine(SpecElem*, int, StrPtr const*, Error*)
0000000000000470 T SpecDataPerl::SpecDataPerl(hv*)
00000000000003b0 T SpecDataPerl::SpecDataPerl(sv*)
0000000000000470 T SpecDataPerl::SpecDataPerl(hv*)
00000000000003b0 T SpecDataPerl::SpecDataPerl(sv*)
0000000000000000 T SpecDataPerl::~SpecDataPerl()
0000000000000000 T SpecDataPerl::~SpecDataPerl()
                 U StrBuf::nullStrBuf
                 U StrBuf::Append(char const*)
                 U SpecData::Get(SpecElem*, int, char const**, char const**)
                 U SpecData::Get(SpecElem*, int, char**, char**)
                 U SpecData::Set(SpecElem*, int, char const**, Error*)
                 U SpecData::Set(SpecElem*, int, char**, Error*)
0000000000000000 R typeinfo for SpecDataPerl
0000000000000000 R typeinfo for SpecData
0000000000000000 R typeinfo name for SpecDataPerl
0000000000000000 R typeinfo name for SpecData
0000000000000000 R vtable for SpecDataPerl
                 U vtable for SpecData
                 U vtable for __cxxabiv1::__class_type_info
                 U vtable for __cxxabiv1::__si_class_type_info
                 U operator delete[](void*)
                 U operator delete(void*)
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U __real__ZdlPv
                 U pthread_getspecific

perlclientapi.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN5P4Tag10v_progressE
0000000000000000 r .rdata$.refptr._ZN5P4Tag8l_clientE
0000000000000000 r .rdata$.refptr._ZN5P4Tag8v_nocaseE
0000000000000000 r .rdata$.refptr._ZN5P4Tag9v_server2E
0000000000000000 r .rdata$.refptr._ZN5P4Tag9v_unicodeE
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$.refptr._ZN9P4Tunable4listE
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN5P4Tag10v_progressE
0000000000000000 R .refptr._ZN5P4Tag8l_clientE
0000000000000000 R .refptr._ZN5P4Tag8v_nocaseE
0000000000000000 R .refptr._ZN5P4Tag9v_server2E
0000000000000000 R .refptr._ZN5P4Tag9v_unicodeE
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 R .refptr._ZN9P4Tunable4listE
0000000000000000 t .text
0000000000000000 r .xdata
                 U PerlIO_stdoutf
                 U Perl_newSViv
                 U Perl_newSVpv
                 U Perl_sv_isobject
                 U Perl_warn_nocontext
                 U _Unwind_Resume
0000000000000000 d ident
                 U CharSetApi::Lookup(char const*)
                 U StrBufDict::StrBufDict()
                 U StrBufDict::~StrBufDict()
00000000000001e0 T PerlClientApi::Disconnect()
0000000000001330 T PerlClientApi::FormatSpec(char const*, hv*)
0000000000000590 T PerlClientApi::GetCharset()
0000000000000730 T PerlClientApi::GetHandler()
00000000000008d0 T PerlClientApi::GetVersion()
00000000000003f0 T PerlClientApi::SetCharset(char const*)
0000000000000c00 T PerlClientApi::SetHandler(sv*)
0000000000000970 T PerlClientApi::SetStreams(int)
0000000000000560 T PerlClientApi::GetApiLevel()
0000000000000750 T PerlClientApi::GetLanguage()
0000000000000b50 T PerlClientApi::GetMessages()
0000000000000820 T PerlClientApi::GetPassword()
0000000000000740 T PerlClientApi::GetProgress()
0000000000000b30 T PerlClientApi::GetWarnings()
0000000000000350 T PerlClientApi::SetApiLevel(int)
0000000000000c70 T PerlClientApi::SetProgress(sv*)
0000000000000550 T PerlClientApi::SetProtocol(char const*, char const*)
0000000000000cd0 T PerlClientApi::SetResolver(sv*)
0000000000000bf0 T PerlClientApi::ClearHandler()
0000000000000b90 T PerlClientApi::GetErrorCount()
0000000000000a60 T PerlClientApi::GetIgnoreFile()
0000000000000790 T PerlClientApi::GetMaxResults()
00000000000009e0 T PerlClientApi::GetTicketFile()
0000000000001230 T PerlClientApi::ServerUnicode()
0000000000000bb0 T PerlClientApi::SetDebugLevel(int)
0000000000000a10 T PerlClientApi::SetIgnoreFile(char const*)
0000000000000990 T PerlClientApi::SetTicketFile(char const*)
00000000000007f0 T PerlClientApi::GetMaxLockTime()
00000000000007c0 T PerlClientApi::GetMaxScanRows()
0000000000000b70 T PerlClientApi::GetOutputCount()
00000000000011b0 T PerlClientApi::GetServerLevel()
0000000000000b60 T PerlClientApi::GetTrackOutput()
0000000000000b80 T PerlClientApi::GetWarningCount()
0000000000000ba0 T PerlClientApi::GetTrackOutputCount()
00000000000011f0 T PerlClientApi::ServerCaseSensitive()
0000000000000ee0 T PerlClientApi::Run(char const*, int, char* const*)
0000000000001070 t PerlClientApi::Run(char const*, int, char* const*) [clone .constprop.37]
0000000000000650 T PerlClientApi::GetCwd()
0000000000000690 T PerlClientApi::GetEnv(char const*)
0000000000000ce0 T PerlClientApi::RunCmd(char const*, ClientUser*, int, char* const*)
0000000000000480 T PerlClientApi::SetCwd(char const*)
00000000000004c0 T PerlClientApi::SetEnv(char const*, char const*)
0000000000000900 T PerlClientApi::Tagged(int)
00000000000000b0 T PerlClientApi::Connect()
00000000000006f0 T PerlClientApi::GetHost()
0000000000000860 T PerlClientApi::GetPort()
00000000000008a0 T PerlClientApi::GetProg()
0000000000000ae0 T PerlClientApi::GetUser()
0000000000000000 T PerlClientApi::Identify()
0000000000000310 T PerlClientApi::SetInput(sv*)
0000000000000920 T PerlClientApi::SetTrack(int)
00000000000002c0 T PerlClientApi::Connected()
0000000000000610 T PerlClientApi::GetClient()
00000000000005d0 T PerlClientApi::GetConfig()
0000000000000b40 T PerlClientApi::GetErrors()
0000000000000b20 T PerlClientApi::GetOutput()
0000000000000a90 T PerlClientApi::IsIgnored(char const*)
0000000000001270 T PerlClientApi::ParseSpec(char const*, char const*)
00000000000014f0 T PerlClientApi::PerlClientApi()
00000000000014f0 T PerlClientApi::PerlClientApi()
0000000000001800 T PerlClientApi::~PerlClientApi()
0000000000001800 T PerlClientApi::~PerlClientApi()
                 U PerlClientUser::GetHandler()
                 U PerlClientUser::SetHandler(sv*)
                 U PerlClientUser::GetProgress()
                 U PerlClientUser::SetApiLevel(int)
                 U PerlClientUser::SetProgress(sv*)
                 U PerlClientUser::ClearHandler()
                 U PerlClientUser::Reset()
                 U PerlClientUser::SetInput(sv*)
                 U PerlClientUser::PerlClientUser(SpecMgr*)
                 U Error::~Error()
                 U Ident::GetMessage(StrBuf*, int)
                 U P4Tag::v_progress
                 U P4Tag::l_client
                 U P4Tag::v_nocase
                 U P4Tag::v_server2
                 U P4Tag::v_unicode
                 U Enviro::Get(char const*)
                 U Enviro::Set(char const*, char const*, Error*)
                 U Enviro::Config(StrPtr const&)
                 U Enviro::Enviro()
                 U Enviro::~Enviro()
                 U Ignore::Reject(StrPtr const&, StrPtr const&)
                 U StrBuf::nullStrBuf
                 U StrBuf::Append(char const*)
                 U StrBuf::operator<<(int)
                 U HostEnv::GetTicketFile(StrBuf&, Enviro*)
                 U HostEnv::GetCwd(StrBuf&, Enviro*)
                 U SpecMgr::SpecToString(char const*, hv*, StrBuf&, Error*)
                 U SpecMgr::StringToSpec(char const*, char const*, Error*)
                 U SpecMgr::SpecMgr()
                 U SpecMgr::~SpecMgr()
                 U StrDict::SetVar(char const*)
                 U StrDict::SetVar(char const*, StrPtr const&)
                 U StrDict::SetVar(char const*, char const*)
                 U StrDict::SetVar(char const*, int)
                 U StrDict::SetArgv(int, char* const*)
                 U P4Result::ErrorCount()
                 U P4Result::TrackCount()
                 U P4Result::OutputCount()
                 U P4Result::WarningCount()
                 U P4Result::GetOutput()
                 U ClientApi::GetCharset()
                 U ClientApi::SetCharset(char const*)
                 U ClientApi::SetVersion(StrPtr const*)
                 U ClientApi::GetLanguage()
                 U ClientApi::GetPassword()
                 U ClientApi::GetProtocol(char const*)
                 U ClientApi::SetProtocol(char const*, char const*)
                 U ClientApi::GetIgnoreFile()
                 U ClientApi::SetIgnoreFile(char const*)
                 U ClientApi::SetTicketFile(char const*)
                 U ClientApi::Run(char const*, ClientUser*)
                 U ClientApi::Init(Error*)
                 U ClientApi::Final(Error*)
                 U ClientApi::GetCwd()
                 U ClientApi::SetCwd(char const*)
                 U ClientApi::Dropped()
                 U ClientApi::GetHost()
                 U ClientApi::GetPort()
                 U ClientApi::GetUser()
                 U ClientApi::SetProg(char const*)
                 U ClientApi::SetBreak(KeepAlive*)
                 U ClientApi::SetTrans(int, int, int, int)
                 U ClientApi::GetClient()
                 U ClientApi::GetConfig()
                 U ClientApi::GetIgnore()
                 U ClientApi::ClientApi()
                 U P4Tunable::list
                 U Error::Fmt(StrBuf&, int) const
                 U operator delete[](void*)
                 U operator delete(void*)
                 U operator new(unsigned long)
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U __real__ZdlPv
                 U __real__Znwm
                 U atoi
                 U pthread_getspecific
                 U strlen

perlclientuser.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 p .pdata$_ZN10ClientUser10OutputInfoEcPc
0000000000000000 p .pdata$_ZN10ClientUser10OutputTextEPci
0000000000000000 p .pdata$_ZN10ClientUser11OutputErrorEPc
0000000000000000 p .pdata$_ZN10ClientUser12OutputBinaryEPci
0000000000000000 p .pdata$_ZN10ClientUser4HelpEPKPc
0000000000000000 p .pdata$_ZN14PerlClientUser7IsAliveEv
0000000000000000 p .pdata$_ZN9KeepAliveD0Ev
0000000000000000 p .pdata$_ZN9KeepAliveD1Ev
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$.refptr._ZTV10ClientUser
0000000000000000 r .rdata$_ZTI10ClientUser
0000000000000000 r .rdata$_ZTI14PerlClientUser
0000000000000000 r .rdata$_ZTI9KeepAlive
0000000000000000 r .rdata$_ZTS10ClientUser
0000000000000000 r .rdata$_ZTS14PerlClientUser
0000000000000000 r .rdata$_ZTS9KeepAlive
0000000000000000 r .rdata$_ZTV14PerlClientUser
0000000000000000 r .rdata$_ZTV9KeepAlive
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 R .refptr._ZTV10ClientUser
0000000000000000 t .text
0000000000000000 t .text$_ZN10ClientUser10OutputInfoEcPc
0000000000000000 t .text$_ZN10ClientUser10OutputTextEPci
0000000000000000 t .text$_ZN10ClientUser11OutputErrorEPc
0000000000000000 t .text$_ZN10ClientUser12OutputBinaryEPci
0000000000000000 t .text$_ZN10ClientUser4HelpEPKPc
0000000000000000 t .text$_ZN14PerlClientUser7IsAliveEv
0000000000000000 t .text$_ZN9KeepAliveD0Ev
0000000000000000 t .text$_ZN9KeepAliveD1Ev
0000000000000000 t .text$_ZThn40_N14PerlClientUser7IsAliveEv
0000000000000000 r .xdata
0000000000000000 r .xdata$_ZN10ClientUser10OutputInfoEcPc
0000000000000000 r .xdata$_ZN10ClientUser10OutputTextEPci
0000000000000000 r .xdata$_ZN10ClientUser11OutputErrorEPc
0000000000000000 r .xdata$_ZN10ClientUser12OutputBinaryEPci
0000000000000000 r .xdata$_ZN10ClientUser4HelpEPKPc
0000000000000000 r .xdata$_ZN14PerlClientUser7IsAliveEv
0000000000000000 r .xdata$_ZN9KeepAliveD0Ev
0000000000000000 r .xdata$_ZN9KeepAliveD1Ev
                 U PerlIO_stdoutf
                 U Perl_av_fetch
                 U Perl_av_len
                 U Perl_av_shift
                 U Perl_call_method
                 U Perl_free_tmps
                 U Perl_gv_stashpv
                 U Perl_markstack_grow
                 U Perl_newRV
                 U Perl_newRV_noinc
                 U Perl_newSViv
                 U Perl_newSVpv
                 U Perl_pop_scope
                 U Perl_push_scope
                 U Perl_save_int
                 U Perl_stack_grow
                 U Perl_sv_2iv_flags
                 U Perl_sv_2mortal
                 U Perl_sv_2pv_flags
                 U Perl_sv_bless
                 U Perl_sv_free
                 U Perl_warn_nocontext
                 U _Unwind_Resume
                 U ClientUser::ErrorPause(char*, Error*)
0000000000000000 T ClientUser::OutputInfo(char, char*)
0000000000000000 T ClientUser::OutputText(char*, int)
                 U ClientUser::HandleError(Error*)
                 U ClientUser::OutputError(char const*)
0000000000000000 T ClientUser::OutputError(char*)
0000000000000000 T ClientUser::OutputBinary(char*, int)
                 U ClientUser::SetOutputCharset(int)
                 U ClientUser::DisableTmpCleanup()
                 U ClientUser::Diff(FileSys*, FileSys*, FileSys*, int, char*, Error*)
                 U ClientUser::Edit(FileSys*, Error*)
                 U ClientUser::File(FileSysType)
                 U ClientUser::Help(char const* const*)
0000000000000000 T ClientUser::Help(char* const*)
                 U ClientUser::Merge(FileSys*, FileSys*, FileSys*, FileSys*, Error*)
                 U ClientUser::Prompt(StrPtr const&, StrBuf&, int, int, Error*)
                 U ClientUser::SetQuiet()
                 U ClientUser::~ClientUser()
                 U P4MergeData::P4MergeData(ClientUser*, ClientMerge*, StrPtr&)
                 U SpecDataTable::SpecDataTable(StrDict*)
                 U SpecDataTable::~SpecDataTable()
0000000000001120 T PerlClientUser::GetHandler()
0000000000000c10 T PerlClientUser::OutputInfo(char, char const*)
0000000000001e80 T PerlClientUser::OutputStat(StrDict*)
0000000000000d90 T PerlClientUser::OutputText(char const*, int)
00000000000010e0 T PerlClientUser::SetHandler(sv*)
00000000000011a0 T PerlClientUser::GetProgress()
00000000000011d0 T PerlClientUser::MkMergeData(ClientMerge*, StrPtr&)
0000000000001150 T PerlClientUser::SetApiLevel(int)
0000000000001160 T PerlClientUser::SetProgress(sv*)
00000000000010a0 T PerlClientUser::ClearHandler()
0000000000000cd0 T PerlClientUser::OutputBinary(char const*, int)
0000000000000f70 T PerlClientUser::ProcessOutput(char const*, sv*)
0000000000000380 T PerlClientUser::CreateProgress(int)
0000000000000ff0 T PerlClientUser::ProcessMessage(Error*)
0000000000000910 T PerlClientUser::CallOutputMethod(char const*, sv*)
0000000000001820 T PerlClientUser::MkActionMergeData(ClientResolveA*, StrPtr&)
0000000000000110 T PerlClientUser::ProgressIndicator()
0000000000000400 T PerlClientUser::Diff(FileSys*, FileSys*, int, char*, Error*)
00000000000008e0 T PerlClientUser::Reset()
00000000000000c0 T PerlClientUser::Prompt(StrPtr const&, StrBuf&, int, Error*)
0000000000000000 T PerlClientUser::IsAlive()
00000000000001b0 T PerlClientUser::Message(Error*)
00000000000012b0 T PerlClientUser::Resolve(ClientMerge*, Error*)
0000000000001950 T PerlClientUser::Resolve(ClientResolveA*, int, Error*)
0000000000000140 T PerlClientUser::Finished()
0000000000001040 T PerlClientUser::SetInput(sv*)
00000000000001f0 T PerlClientUser::InputData(StrBuf*, Error*)
00000000000007f0 T PerlClientUser::PerlClientUser(SpecMgr*)
00000000000007f0 T PerlClientUser::PerlClientUser(SpecMgr*)
0000000000000730 T PerlClientUser::~PerlClientUser()
0000000000000000 T PerlClientUser::~PerlClientUser()
0000000000000000 T PerlClientUser::~PerlClientUser()
                 U P4ClientProgress::P4ClientProgress(sv*, int)
                 U P4ActionMergeData::P4ActionMergeData(ClientUser*, ClientResolveA*, StrPtr&, sv*)
                 U Diff::CloseOutput(Error*)
                 U Diff::DiffWithFlags(DiffFlags const&)
                 U Diff::SetInput(FileSys*, FileSys*, DiffFlags const&, Error*)
                 U Diff::SetOutput(char const*, Error*)
                 U Diff::Diff()
                 U Diff::~Diff()
                 U Spec::Parse(char const*, SpecData*, Error*, int)
                 U Spec::Spec(char const*, char const*, Error*)
                 U Spec::~Spec()
                 U Error::~Error()
                 U StrBuf::nullStrBuf
                 U StrBuf::Append(char const*)
                 U FileSys::MakeGlobalTemp()
                 U FileSys::Create(FileSysType)
                 U FileSys::Compare(FileSys*, Error*)
                 U SpecMgr::AddSpecDef(char const*, char const*)
                 U SpecMgr::SpecToString(char const*, hv*, StrBuf&, Error*)
                 U SpecMgr::StrDictToHash(StrDict*, sv*)
                 U SpecMgr::StrDictToSpec(StrDict*, StrPtr*)
                 U StrDict::GetVar(char const*)
                 U P4Result::AddMessage(Error*)
                 U P4Result::DeleteTrack()
                 U P4Result::Reset()
                 U P4Result::AddTrack(sv*)
                 U P4Result::AddOutput(sv*)
                 U P4Result::P4Result()
                 U P4Result::~P4Result()
                 U DiffFlags::Init(char const*)
0000000000000000 T KeepAlive::~KeepAlive()
0000000000000000 T KeepAlive::~KeepAlive()
                 U ClientResolveA::AutoResolve(MergeForce) const
0000000000000000 R typeinfo for ClientUser
0000000000000000 R typeinfo for PerlClientUser
0000000000000000 R typeinfo for KeepAlive
0000000000000000 R typeinfo name for ClientUser
0000000000000000 R typeinfo name for PerlClientUser
0000000000000000 R typeinfo name for KeepAlive
                 U vtable for ClientUser
0000000000000000 R vtable for PerlClientUser
0000000000000000 R vtable for KeepAlive
                 U vtable for __cxxabiv1::__class_type_info
                 U vtable for __cxxabiv1::__vmi_class_type_info
0000000000000000 T non-virtual thunk to PerlClientUser::IsAlive()
00000000000007e0 T non-virtual thunk to PerlClientUser::~PerlClientUser()
00000000000000b0 T non-virtual thunk to PerlClientUser::~PerlClientUser()
                 U operator delete[](void*)
                 U operator delete(void*)
                 U operator new(unsigned long)
                 U __cxa_pure_virtual
                 U __getreent
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U __real__ZdlPv
                 U __real__Znwm
                 U fwrite
                 U pthread_getspecific
                 U strlen

specmgr.o:
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 p .pdata
0000000000000000 p .pdata$_ZN12SpecDataPerlD1Ev
0000000000000000 r .rdata
0000000000000000 r .rdata$.refptr._ZN6StrBuf10nullStrBufE
0000000000000000 r .rdata$.refptr._ZTV12SpecDataPerl
0000000000000000 r .rdata$.refptr._ZTV8SpecData
0000000000000000 r .rdata$zzz
0000000000000000 R .refptr._ZN6StrBuf10nullStrBufE
0000000000000000 R .refptr._ZTV12SpecDataPerl
0000000000000000 R .refptr._ZTV8SpecData
0000000000000000 t .text
0000000000000000 t .text$_ZN12SpecDataPerlD1Ev
0000000000000000 r .xdata
0000000000000000 r .xdata$_ZN12SpecDataPerlD1Ev
                 U PerlIO_stdoutf
                 U Perl_av_fetch
                 U Perl_av_len
                 U Perl_av_store
                 U Perl_call_method
                 U Perl_free_tmps
                 U Perl_hv_common_key_len
                 U Perl_markstack_grow
                 U Perl_newRV_noinc
                 U Perl_newSV_type
                 U Perl_newSVpv
                 U Perl_pop_scope
                 U Perl_push_scope
                 U Perl_save_int
                 U Perl_stack_grow
                 U Perl_sv_2mortal
                 U Perl_warn_nocontext
                 U _Unwind_Resume
                 U StrBufDict::StrBufDict()
                 U SpecDataPerl::SpecDataPerl(hv*)
                 U SpecDataPerl::SpecDataPerl(sv*)
0000000000000000 T SpecDataPerl::~SpecDataPerl()
                 U SpecDataTable::SpecDataTable(StrDict*)
                 U SpecDataTable::~SpecDataTable()
                 U Spec::Get(int)
                 U Spec::Count()
                 U Spec::Parse(char const*, SpecData*, Error*, int)
                 U Spec::Format(SpecData*, StrBuf*)
                 U Spec::Spec(char const*, char const*, Error*)
                 U Spec::~Spec()
                 U Error::Set(ErrorId const&)
                 U Error::~Error()
                 U StrBuf::nullStrBuf
                 U StrBuf::Append(StrPtr const*)
                 U StrBuf::Append(char const*)
                 U StrBuf::Append(char const*, unsigned int)
                 U StrBuf::operator<<(int)
                 U StrOps::Lower(StrBuf&)
00000000000000d0 T SpecMgr::AddSpecDef(char const*, StrPtr&)
0000000000000110 T SpecMgr::AddSpecDef(char const*, char const*)
0000000000000490 T SpecMgr::InsertItem(hv*, StrPtr const*, StrPtr const*)
0000000000000c40 T SpecMgr::SpecFields(StrPtr*)
0000000000000ed0 T SpecMgr::SpecFields(char const*)
0000000000000200 T SpecMgr::HaveSpecDef(char const*)
0000000000000220 T SpecMgr::SpecToString(char const*, hv*, StrBuf&, Error*)
0000000000001180 T SpecMgr::StringToSpec(char const*, char const*, Error*)
0000000000000b40 T SpecMgr::StrDictToHash(StrDict*, sv*)
0000000000001320 T SpecMgr::StrDictToSpec(StrDict*, StrPtr*)
0000000000000150 T SpecMgr::Reset()
0000000000000f00 T SpecMgr::NewSpec(StrPtr*)
00000000000003a0 T SpecMgr::SplitKey(StrPtr const*, StrBuf&, StrBuf&)
0000000000000000 T SpecMgr::SpecMgr()
0000000000000000 T SpecMgr::SpecMgr()
00000000000000b0 T SpecMgr::~SpecMgr()
00000000000000b0 T SpecMgr::~SpecMgr()
                 U StrDict::GetVar(char const*)
                 U StrDict::SetVar(char const*, StrPtr const&)
                 U StrDict::SetVar(char const*, char const*)
                 U StrDict::RemoveVar(char const*)
                 U vtable for SpecDataPerl
                 U vtable for SpecData
                 U operator delete[](void*)
                 U operator delete(void*)
                 U operator new(unsigned long)
                 U __gxx_personality_seh0
                 U __imp_PL_thr_key
                 U __real__ZdaPv
                 U __real__ZdlPv
                 U __real__Znwm
                 U atoi
                 U pthread_getspecific
0000000000000000 D speclist
                 U strchr


[-- Attachment #3: Type: text/plain, Size: 218 bytes --]

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

  reply	other threads:[~2014-05-29 17:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-29  4:25 Andrew DeFaria
2014-05-29  8:58 ` Csaba Raduly
2014-05-29 20:34   ` Andrew DeFaria [this message]
2014-05-30  6:49     ` Larry Hall (Cygwin)
2014-05-30  8:01       ` Andrew DeFaria
2014-05-30 11:27         ` Csaba Raduly
2014-05-30 17:40           ` Larry Hall (Cygwin)
2014-05-30 22:06           ` Andrew DeFaria
2014-05-30 16:47         ` Larry Hall (Cygwin)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='lm7rtc$ofg$1@ger.gmane.org' \
    --to=andrew@defaria.com \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).