[PATCH] D58250: [AIX][CMake] Changes for building on AIX with XL and GCC
Hubert Tong via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 15 13:58:13 PST 2019
hubert.reinterpretcast added inline comments.
================
Comment at: llvm/cmake/modules/HandleLLVMOptions.cmake:138
+if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
+ append("-Wl,-bbigtoc"
+ CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
----------------
sfertile wrote:
> I'm interested in why you choose bigtoc linker option over using large code model? From the little I understand about the bigtoc option it seems that large code model would be the preferable solution when expecting to have a toc that is a lot bigger then 64K.
`-fPIC` is already specified. Even if the code is generated using the large code model, TOC overflow is a hard error for the linker unless if `-bbigtoc` is specified. On linking, the XL compiler specifies `-bbigtoc` to the linker in response `-qpic=large`.
You can see this for yourself if you compile the following with `-q64 -qpic=large` and link with only `-q64`:
```
#define x2A( BASE ) BASE ## a, BASE ## b
#define x2B( BASE ) x2A(BASE ## a), x2A(BASE ## b)
#define x2C( BASE ) x2B(BASE ## a), x2B(BASE ## b)
#define x2D( BASE ) x2C(BASE ## a), x2C(BASE ## b)
#define x2E( BASE ) x2D(BASE ## a), x2D(BASE ## b)
#define x2F( BASE ) x2E(BASE ## a), x2E(BASE ## b)
#define x2G( BASE ) x2F(BASE ## a), x2F(BASE ## b)
#define x2H( BASE ) x2G(BASE ## a), x2G(BASE ## b)
#define x2I( BASE ) x2H(BASE ## a), x2H(BASE ## b)
#define x2J( BASE ) x2I(BASE ## a), x2I(BASE ## b)
#define x2K( BASE ) x2J(BASE ## a), x2J(BASE ## b)
#define x2KA( BASE ) x2K(BASE ## a), x2K(BASE ## b)
#define x2KB( BASE ) x2KA(BASE ## a), x2KA(BASE ## b)
int x2KB( x );
int main(void) { x2KB( ++x ); }
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D58250/new/
https://reviews.llvm.org/D58250
More information about the llvm-commits
mailing list