WuZhao added a comment.

I wan to point to some issues, because I am also doing AIX support based on 
your patch and I tested and verified.

Firstly, in the lib/Driver/ToolChains.cpp line 3756

  case llvm::Triple::ppc64:
    addPathIfExists(D, getDriver().SysRoot + getDriver().Dir + "/../lib64", 
Paths);
    addPathIfExists(D, getDriver().SysRoot + "/usr/lib64", Paths);
    break;

In fact, in AIX there is no /usr/lib64, we only have /usr/lib and crt0.o for 32 
bits, crt0_64.o for 64 bits. We also have crti.o / crti_64.o for C++.

Secondly, we should also define  _AIX71 for AIX 7.1 in the 
lib/Basic/Targets.cpp.

Thirdly, the linker construct job has many issues (maybe because you have not 
supported code generation) in the lib/Driver/Tools.cpp, AIX has much difference 
with Solaris in fact.

we should code like this:

   if (Args.hasArg(options::OPT_shared)) {
     CmdArgs.push_back("-bM:SRE");
     CmdArgs.push_back("-bnoentry");
   }
   
   if (Args.hasArg(options::OPT_static)) {
     CmdArgs.push_back("-bnso");
     CmdArgs.push_back("-bI:/lib/syscalls.exp");
  }
  
  .......

I will try my best to complete linker work and so on based on your patch.

I notice that one thing, you define _THREAD_SAFE for posix thread, it is right. 
In AIX, we do not have _REENTRANT.

Lastly, you should be careful one thing: In AIX, when we use -pthread option, 
gcc standard headers directory and linker directory is changed. You should 
consider this. You can try gcc -pthread -v to see the output.

In collusion, this patch has some work to do in AIX from the view of my point.


https://reviews.llvm.org/D18360



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to