http://llvm.org/bugs/show_bug.cgi?id=4253

           Summary: available_externally causes wrong PIC code generation
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Created an attachment (id=3019)
 --> (http://llvm.org/bugs/attachment.cgi?id=3019)
tst.i

$ clang tst.i -fPIC -o tst.o -c
$ gcc -shared -o tst.so tst.o
/usr/bin/ld: tst.o: relocation R_X86_64_PC32 against undefined symbol
`atoi@@GLIBC_2.2.5' can not be used when making a shared object; recompile with
-fPIC

The IR looks like this:
define available_externally fastcc i32 @atoi(i8* %__nptr) nounwind readonly {
entry:
        %call = tail call i64 @strtol(i8* nocapture %__nptr, i8** null, i32 10)
nounwind readonly               ; <i64> [#uses=1]
        %conv = trunc i64 %call to i32          ; <i32> [#uses=1]
        ret i32 %conv
}

If I remove the 'available_externally' flag the file is compiled correctly.

The problem is that llc emits this for available_externally, probably thinking
that atoi is a local function:
call    atoi


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to