От: mehdi.am...@apple.com <mehdi.am...@apple.com> от имени Mehdi Amini <mehdi.am...@apple.com> Отправлено: 27 сентября 2016 г. 8:46 Кому: Perevalov Alexey Копия: cfe-users@lists.llvm.org; llvm-...@lists.llvm.org Тема: Re: [llvm-dev] objc object file generated for gnustep runtime for ELF target is too big > On Sep 26, 2016, at 6:33 AM, Perevalov Alexey via llvm-dev > <llvm-...@lists.llvm.org> wrote: > > Dear community, > > > I'm using gnustep runtime -fobjc-runtime=gnustep with gnustep-libobjc2 > (https://github.com/gnustep/libobjc2) and > > Cocotron/Chameleon. > > For following source file > > #import <Foundation/Foundation.h> > #import <UIKit/UIKit.h> > > int main(void) > { > NSString *str = [NSString stringWithCString:"TEST"]; > NSLog(@"test object %@", str); > return 0; > } > > Compilation in xcode's clang >Which version? I think, it doesn't matter, due to with xcode's clang all fine but if you intersting, xcrun -sdk iphoneos clang --version Apple LLVM version 7.0.0 (clang-700.1.76) Target: x86_64-apple-darwin15.0.0 Thread model: posix also all fine with open source llvm clang if I choose ios as -fobjc-runtime, I got troubles only with gnustep runtime in clang+llvm-3.8.0 and 3.9.x. >— >Mehdi > xcrun -sdk iphoneos clang -arch armv7s -mios-version-min=6.1 -c > test_foundation.m -o test_foundation_apple.o > gives following result: > 1. object file has only 3156 bytes size > 2. and in disassembler only main function > 3. the final executable will be 49992 bytes size in this case > > > But compilation in llvm's clang downloaded from > http://llvm.org/releases/3.8.0/clang+llvm-3.8.0-x86_64-apple-darwin.tar.xz > > ( > clang version 3.8.0 (tags/RELEASE_380/final) > Target: x86_64-apple-darwin15.0.0 > Thread model: posix > ) > gives another results: > 1. object file has 159044 bytes size > 2. in disassembler a lot of unnecessary .objc_property_list, > .objc_method_list, .objc_protocol_list and .objc_protocol in .bss and > .data section > 3. the final binary size is 101837 bytes size > > > > If comment in above sample #import <UIKit/UIKit.h, the size of object > file and binary file in xcode compilation will be the same, > but size binary and object file in case of > clang+llvm-3.8.0-x86_64-apple-darwin compilation will be reduced > sufficiently: > binary 28569 and object 36952 accordingly. > > > > Looks like all protocols from UIKit.h is placed into binary/object even > it's not used there. > I got 3.9.0 from public git (branch release_39 of clang git repository) > and found that all protocols interpret as definition > (isThisDeclarationADefinition), > and in CGObjCGNU.cpp it's placed into object file whenever it's used or > not. With the same open source compiler and -fobjc-runtime=ios > protocols are not putting into > object file even in compilation for ELF (I used -target > arm-linux-gnueabi). > I used default binutil linker, not llvm's ld.ldd, due to I have problem with > relocation on ARM. > I didn't use LTO, due to my linker doesn't have plugin support (I didnt' yet > recompile it). > > Could somebody point me where to solve that problem, is it AST > generation stage, or linkage stage or maybe it's not a problem and just LTO > could be solution here? > > > > > p.s. It's not only one issue found by me in gnustep runtime generation, > and I'll report these issues in next emails. > > > > > > Best regards, > Alexey Perevalov > > _______________________________________________ > LLVM Developers mailing list > llvm-...@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev llvm-dev Info Page lists.llvm.org To see the collection of prior postings to the list, visit the llvm-dev Archives. Using llvm-dev: To post a message to all the list members, send ... _______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
Re: [cfe-users] [llvm-dev] objc object file generated for gnustep runtime for ELF target is too big
Perevalov Alexey via cfe-users Tue, 27 Sep 2016 00:07:07 -0700
- [cfe-users] objc object file generated for ... Perevalov Alexey via cfe-users
- Re: [cfe-users] objc object file gener... Perevalov Alexey via cfe-users
- Re: [cfe-users] [llvm-dev] objc object... Mehdi Amini via cfe-users
- Re: [cfe-users] [llvm-dev] objc ob... Perevalov Alexey via cfe-users
- Re: [cfe-users] [llvm-dev] obj... Mehdi Amini via cfe-users
- Re: [cfe-users] [llvm-dev] objc object... David Chisnall via cfe-users
- Re: [cfe-users] [llvm-dev] objc ob... Perevalov Alexey via cfe-users
- Re: [cfe-users] [llvm-dev] obj... David Chisnall via cfe-users