[llvm-dev] Cross compiling an empty program results in a segfault

Ivan Medoedov via llvm-dev llvm-dev at lists.llvm.org
Fri May 3 16:43:09 PDT 2019


Sorry for the late reply.

Thanks, Eli. That was really helpful.

On Fri, Apr 12, 2019 at 9:31 PM Eli Friedman <efriedma at quicinc.com> wrote:

> “--entry main” is not going to do what you want; the entry point for a
> Linux program is not equivalent to the C “main”.
> http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html
> has a description of how a C program normally starts on Linux.
>
>
>
> Generally, to build a C program, you don’t want to invoke the linker
> directly; instead, use clang to invoke the linker correctly.  This will
> pass the appropriate flags and link against the appropriate libraries.
> When you’re cross compiling, to make this work, you have to actually have
> the appropriate libraries, so you’ll have to build or download them
> separately.  Then you tell clang the path to those libraries using
> –sysroot.  https://clang.llvm.org/docs/CrossCompilation.html has a
> general description of various issues with cross-compiling.
>
>
>
> -Eli
>
>
>
> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> *On Behalf Of *Ivan
> Medoedov via llvm-dev
> *Sent:* Wednesday, April 10, 2019 1:28 PM
> *To:* llvm-dev at lists.llvm.org
> *Subject:* [EXT] [llvm-dev] Cross compiling an empty program results in a
> segfault
>
>
>
> Hello,
>
>
>
> I'm trying to cross compile an empty program on macOS for Linux:
>
>
>
> cat test.c
>
>
>
> int main() {
>
>         int a = 2+3;
>
>         return 0;
>
> }
>
>
>
> clang -o -c -target x86_64-linux-gnu test.c
>
>
>
> If I copy the resulting test.o to the Linux machine and run clang test.o,
> it works fine.
>
>
>
> However if I try to link it on macOS, I get a segfault when I launch
> ./a.out
>
>
>
> ld.lld --entry main test.o
>
>
>
> [copy a.out to Linux]
>
>
>
> ./a.out
>
> segmentation fault 0x00000000001 in ?? ()
>
>
>
> Would really appreciate your help here!
>
>
>
> Thanks
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190504/7c2117cf/attachment.html>


More information about the llvm-dev mailing list