X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f Message-Id: <201110260815.p9Q8FoVI023833@delorie.com> X-Recipient: djgpp AT delorie DOT com From: "Josep M." To: Subject: RE: _rdtsc(void) inline function in time.h - cause problem with multiple definition during linking Date: Wed, 26 Oct 2011 09:49:08 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" X-Mailer: Microsoft Office Outlook, Build 11.0.5510 In-reply-to: <83k47tc9u2.fsf@gnu.org> Thread-Index: AcyTM7z59uXYe2UDRNKtbn0JK8ijowAf6mUg X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id p9Q8FuVI023838 Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk I don't know if that could be the problem but rdtsc returns 2 32 bits values. The example is not an inline function, but an rdtsc function could be like: long long unsigned rdtsc() { long unsigned hi,lo; long long unsigned nmb; asm volatile( "rdtsc" :"=a"(lo),"=d"(hi) ); nmb=(((long long)hi)<<32)|((long long)lo); return nmb; } -----Mensaje original----- De: Eli Zaretskii [mailto:eliz AT gnu DOT org] Enviado el: dimarts, 25 / octubre / 2011 18:31 Para: djgpp AT delorie DOT com Asunto: Re: _rdtsc(void) inline function in time.h - cause problem with multiple definition during linking > From: RayeR > Date: Tue, 25 Oct 2011 04:02:09 -0700 (PDT) > > during compiling large sources I run into troubles with multiple > _rdtsc(void) definition during linking. The problem is caused when in > 1st stage is compiled a library that includes time.h and then in 2nd > stage is compiled main app that also includes time.h Because there is > _rdtsc() code already in library linker got confused what to use. > > Do you think it should be fixed DJGPP time.h header to redefine > > extern __inline__ unsigned long long > _rdtsc(void) > { > unsigned long long result; > __asm__ __volatile__ ("rdtsc" : "=A"(result) ); > return result; > } > > to static? Can you show the error messages you get? It is strange that you should get any errors at all: an inline function is like a macro, it disappears without a trace in the compiled object code, so the linker should not complain, because there's no symbol corresponding to the function for it to see any multiple definitions. There simply should not be any definition at all. Did you perhaps disable inlining, or compiled with some headers that define away __inline__? __________ Información de NOD32, revisión 6574 (20111025) __________ Este mensaje ha sido analizado con NOD32 antivirus system http://www.nod32.com