[LLVMdev] Linking strncpy
John Criswell
criswell at cs.uiuc.edu
Thu Apr 15 08:33:01 PDT 2004
Eric Zimmerman wrote:
> Chris,
>
> I'm fine with using JIT, but I'm trying to understand this problem:
> 1. My LLVM program does not produce correct results
> 2. Using llvm-dis, I disassemble the bytecode to C
> 3. I recompile using GCC and the program _works correctly_.
>
> The only odd thing is when I recompile with GCC, I see these messages:
>
> pal3.c:195: warning: conflicting types for built-in function `strcmp'
> pal3.c:200: warning: conflicting types for built-in function `memcpy'
> pal3.c:202: warning: conflicting types for built-in function `strncpy'
>
> The lines referenced are:
> int strcmp(signed char *, signed char *);
> signed char *memcpy(signed char *, signed char *, unsigned );
> signed char *strncpy(signed char *, signed char *, unsigned );
>
> Do you have any insight into what's happening? Thanks,
These warnings seem to happen and, as far as I can tell, can be safely
ignored.
If you're on x86, it's possible that your code works incorrectly due to
bugs in our code generator that have been fixed since I created the LLVM
source tarball for your class. I know at least one codegen bug has been
found since I made the tarball.
If you could post the snippet of LLVM assembly code that is miscompiled,
that will help us figure out if LLVM was/is miscompiling your program.
Also, you can check the following URL for X86 Backend bugs to see if
your code could be triggering the following bugs:
http://llvm.cs.uiuc.edu/bugs/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&component=X86+Backend&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&namedcmd=All&newqueryname=&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=
Regards,
-- John T.
> -Eric
>
> ----- Forwarded message from Chris Lattner <sabre at nondot.org> -----
>
> Date: Wed, 14 Apr 2004 19:25:45 -0500 (CDT)
> From: Chris Lattner <sabre at nondot.org>
> To: llvmdev at cs.uiuc.edu
> Subject: Re: [LLVMdev] Linking strncpy
> Reply-To: llvmdev at cs.uiuc.edu
>
> On Wed, 14 Apr 2004, Eric Zimmerman wrote:
>
>>I'm working on a CS326 compiler project, and I'm having some problems
>>using string functions. Some LLVM programs produced are either
>>aborting or giving incorrect results; however, if I disassemble the
>>LLVM bytecode and recompile with GCC, everything works fine.
>>
>>I encountered the following error when running lli with
>>'-force-interpreter' option:
>>"Tried to execute an unknown external function: sbyte * (sbyte
>>*, sbyte *, uint) * strncpy"
>
>
> This is one of the "features" of the interpreter: it only supports
> external functions that it "knows" about. Why not use the JIT, without
> -force-interpreter? Are you on a machine that we don't support? If so,
> you can either add support for strncpy (to
> lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp) or use the C
> backend.
>
> -Chris
>
>
>
>>Strncpy is used as part of my compiler's run-time library, and it was
>>compiled with the C-frontend for LLVM. Looking at the assembly, the
>>function is declared at the top of the file;
>>
>>declare sbyte* %strncpy(sbyte*,sbyte*,uint) ;; __builtin_strncpy
>>
>>And it is called like this:
>> %tmp.12 = call sbyte* (sbyte*, sbyte*, uint)* %strncpy(sbyte*
>>%tmp.15, sbyte* %tmp.23, uint %tmp.27)
>>
>>What am I forgetting to do? What is the right way to link to the
>>string functions? Thanks,
>>
>>-Eric Zimmerman
>>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
--
*********************************************************************
* John T. Criswell Email: criswell at uiuc.edu *
* Research Programmer *
* University of Illinois at Urbana-Champaign *
* *
* "It's today!" said Piglet. "My favorite day," said Pooh. *
*********************************************************************
More information about the llvm-dev
mailing list