罗勇刚(Yonggang Luo)
2013-Oct-22 14:08 UTC
[LLVMdev] How to use clang -intergrated-as to compile cross-(os/target) assembly file.
For example, I execute the following command sequences: H:\CI\bld\compilers\musl\src\math\i386>type sqrt.s #.globl _sqrt .global sqrt #.type sqrt, at function #_sqrt: sqrt: fldl 4(%esp) fsqrt fstsw %ax sub $12,%esp fld %st(0) fstpt (%esp) mov (%esp),%ecx and $0x7ff,%ecx cmp $0x400,%ecx jnz 1f and $0x200,%eax sub $0x100,%eax sub %eax,(%esp) fstp %st(0) fldt (%esp) 1: add $12,%esp fstpl 4(%esp) fldl 4(%esp) ret H:\CI\bld\compilers\musl\src\math\i386>type sqrt.c float __cdecl sqrt(float z) { return 0.0; } H:\CI\bld\compilers\musl\src\math\i386>clang -integrated-as -c -v --target=i686 -pc-win32 sqrt.s clang version 3.4 (trunk) Target: i686-pc-win32 Thread model: posix "C:\Program Files (x86)\LLVM 3.4.svn\bin\clang.exe" -cc1as -triple i686-pc-win3 2 -filetype obj -main-file-name sqrt.s -target-cpu pentium4 -fdebug-compilation- dir "H:\\CI\\bld\\compilers\\musl\\src\\math\\i386" -dwarf-debug-producer clang version 3.4 (trunk) -o sqrt.o sqrt.s H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o sqrt.o: file format COFF-i386 Contents of section .text: 0000 dd442404 d9fa9bdf e083ec0c d9c0db3c .D$............< 0010 248b0c24 81e1ff07 000081f9 00040000 $..$............ 0020 75122500 0200002d 00010000 290424dd u.%....-....).$. 0030 d8db2c24 83c40cdd 5c2404dd 442404c3 ..,$....\$..D$.. SYMBOL TABLE: [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x40 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 [ 2](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 sqrt H:\CI\bld\compilers\musl\src\math\i386>clang --target=i686-pc-win32 -c sqrt.c sqrt.c:1:15: warning: incompatible redeclaration of library function 'sqrt' [-Wincompatible-library-redeclaration] float __cdecl sqrt(float z) ^ sqrt.c:1:15: note: 'sqrt' is a builtin with type 'double (double)' 1 warning generated. H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o sqrt.o: file format COFF-i386 Contents of section .text: 0000 5589e583 ec08f30f 1045080f 57c9f30f U........E..W... 0010 1145fcd9 eef30f11 4df883c4 085dc3 .E......M....]. SYMBOL TABLE: [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x1f nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 [ 2](sec -1)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000001 @feat.00 [ 3](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 _sqrt H:\CI\bld\compilers\musl\src\math\i386> H:\CI\bld\compilers\musl\src\math\i386>clang -integrated-as -c -v --target=amd6 4-pc-win32 sqrt.s clang version 3.4 (trunk) Target: amd64-pc-win32 Thread model: posix "C:\Program Files (x86)\LLVM 3.4.svn\bin\clang.exe" -cc1as -triple amd64-pc-win 32 -filetype obj -main-file-name sqrt.s -target-cpu x86-64 -fdebug-compilation-d ir "H:\\CI\\bld\\compilers\\musl\\src\\math\\i386" -dwarf-debug-producer clang v ersion 3.4 (trunk) -o sqrt.o sqrt.s H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o sqrt.o: file format COFF-x86-64 Contents of section .text: 0000 67dd4424 04d9fa9b dfe083ec 0cd9c067 g.D$...........g 0010 db3c2467 8b0c2481 e1ff0700 0081f900 .<$g..$......... 0020 04000075 14250002 00002d00 01000067 ...u.%....-....g 0030 290424dd d867db2c 2483c40c 67dd5c24 ).$..g.,$...g.\$ 0040 0467dd44 2404c3 .g.D$.. SYMBOL TABLE: [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x47 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 [ 2](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 sqrt H:\CI\bld\compilers\musl\src\math\i386>clang --target=amd64-pc-win32 -c sqrt.c sqrt.c:1:15: warning: incompatible redeclaration of library function 'sqrt' [-Wincompatible-library-redeclaration] float __cdecl sqrt(float z) ^ sqrt.c:1:15: note: 'sqrt' is a builtin with type 'double (double)' 1 warning generated. H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o sqrt.o: file format COFF-x86-64 Contents of section .text: 0000 554889e5 50f30f11 45fc0f57 c04883c4 UH..P...E..W.H.. 0010 085dc3 .]. SYMBOL TABLE: [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x13 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 [ 2](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 sqrt H:\CI\bld\compilers\musl\src\math\i386> * * *My problem is:* Because C __cdecl calling convention vary on x86/amd64 architecture under win32. for example, the sqrt function in is expressed as float __cdecl sqrt(float) but in the compiled object file, the final COFF symbol table: on x86/win32(i686-pc-win32), it's named with "*_sqrt*" on amd64/win32(amd64-pc-win32), it's named with "*sqrt*" on linux(*-pc-linux), in ELF symbol table, it's named with "*sqrt*", So I want to control the function name in assembly file, by the means of Assembly macros, but I don't know LLVM-MC support which kinds of macros to control the assembly directives so that I can unified the assembly function name can match the c function name in object symbol table under different CPU(x86/x64) and different OS(Win32/Linux/MacOS). The simplest way is to duplicate the function name is to duplicate the function name in two form: .globl _sqrt .global sqrt #.type sqrt, at function _sqrt: sqrt: fldl 4(%esp) But that will leading redundant object symbol name. besides, the* .type *didn't support under COFF symbol table, so how did I use assembly macro to comment it out when we are targeting COFF object but reserved when we are targeting ELF. didn't know if Mach-O support for this directive. -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131022/8af83fc7/attachment.html>
Reid Kleckner
2013-Oct-22 17:35 UTC
[LLVMdev] How to use clang -intergrated-as to compile cross-(os/target) assembly file.
I don't think we should attempt to mangle symbols declared in assembly source files. If you're writing assembly, you will need to handle ABI portability, including the _ prefix on win32 x86. clang will run the C preprocessor for you if you use the .S file suffix (case matters). On Tue, Oct 22, 2013 at 7:08 AM, 罗勇刚(Yonggang Luo) <luoyonggang at gmail.com>wrote:> For example, I execute the following command sequences: > > H:\CI\bld\compilers\musl\src\math\i386>type sqrt.s > #.globl _sqrt > .global sqrt > #.type sqrt, at function > #_sqrt: > sqrt: fldl 4(%esp) > fsqrt > fstsw %ax > sub $12,%esp > fld %st(0) > fstpt (%esp) > mov (%esp),%ecx > and $0x7ff,%ecx > cmp $0x400,%ecx > jnz 1f > and $0x200,%eax > sub $0x100,%eax > sub %eax,(%esp) > fstp %st(0) > fldt (%esp) > 1: add $12,%esp > fstpl 4(%esp) > fldl 4(%esp) > ret > > H:\CI\bld\compilers\musl\src\math\i386>type sqrt.c > float __cdecl sqrt(float z) > { > return 0.0; > } > H:\CI\bld\compilers\musl\src\math\i386>clang -integrated-as -c -v > --target=i686 > -pc-win32 sqrt.s > clang version 3.4 (trunk) > Target: i686-pc-win32 > Thread model: posix > "C:\Program Files (x86)\LLVM 3.4.svn\bin\clang.exe" -cc1as -triple > i686-pc-win3 > 2 -filetype obj -main-file-name sqrt.s -target-cpu pentium4 > -fdebug-compilation- > dir "H:\\CI\\bld\\compilers\\musl\\src\\math\\i386" -dwarf-debug-producer > clang > version 3.4 (trunk) -o sqrt.o sqrt.s > > H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o > > sqrt.o: file format COFF-i386 > > Contents of section .text: > 0000 dd442404 d9fa9bdf e083ec0c d9c0db3c .D$............< > 0010 248b0c24 81e1ff07 000081f9 00040000 $..$............ > 0020 75122500 0200002d 00010000 290424dd u.%....-....).$. > 0030 d8db2c24 83c40cdd 5c2404dd 442404c3 ..,$....\$..D$.. > SYMBOL TABLE: > [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text > AUX scnlen 0x40 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 > [ 2](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 sqrt > > H:\CI\bld\compilers\musl\src\math\i386>clang --target=i686-pc-win32 -c > sqrt.c > sqrt.c:1:15: warning: incompatible redeclaration of library function 'sqrt' > [-Wincompatible-library-redeclaration] > float __cdecl sqrt(float z) > ^ > sqrt.c:1:15: note: 'sqrt' is a builtin with type 'double (double)' > 1 warning generated. > > H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o > > sqrt.o: file format COFF-i386 > > Contents of section .text: > 0000 5589e583 ec08f30f 1045080f 57c9f30f U........E..W... > 0010 1145fcd9 eef30f11 4df883c4 085dc3 .E......M....]. > SYMBOL TABLE: > [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text > AUX scnlen 0x1f nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 > [ 2](sec -1)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000001 @feat.00 > [ 3](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 _sqrt > > H:\CI\bld\compilers\musl\src\math\i386> > H:\CI\bld\compilers\musl\src\math\i386>clang -integrated-as -c -v > --target=amd6 > 4-pc-win32 sqrt.s > clang version 3.4 (trunk) > Target: amd64-pc-win32 > Thread model: posix > "C:\Program Files (x86)\LLVM 3.4.svn\bin\clang.exe" -cc1as -triple > amd64-pc-win > 32 -filetype obj -main-file-name sqrt.s -target-cpu x86-64 > -fdebug-compilation-d > ir "H:\\CI\\bld\\compilers\\musl\\src\\math\\i386" -dwarf-debug-producer > clang v > ersion 3.4 (trunk) -o sqrt.o sqrt.s > > H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o > > sqrt.o: file format COFF-x86-64 > > Contents of section .text: > 0000 67dd4424 04d9fa9b dfe083ec 0cd9c067 g.D$...........g > 0010 db3c2467 8b0c2481 e1ff0700 0081f900 .<$g..$......... > 0020 04000075 14250002 00002d00 01000067 ...u.%....-....g > 0030 290424dd d867db2c 2483c40c 67dd5c24 ).$..g.,$...g.\$ > 0040 0467dd44 2404c3 .g.D$.. > SYMBOL TABLE: > [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text > AUX scnlen 0x47 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 > [ 2](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 sqrt > > H:\CI\bld\compilers\musl\src\math\i386>clang --target=amd64-pc-win32 -c > sqrt.c > sqrt.c:1:15: warning: incompatible redeclaration of library function 'sqrt' > [-Wincompatible-library-redeclaration] > float __cdecl sqrt(float z) > ^ > sqrt.c:1:15: note: 'sqrt' is a builtin with type 'double (double)' > 1 warning generated. > > H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o > > sqrt.o: file format COFF-x86-64 > > Contents of section .text: > 0000 554889e5 50f30f11 45fc0f57 c04883c4 UH..P...E..W.H.. > 0010 085dc3 .]. > SYMBOL TABLE: > [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text > AUX scnlen 0x13 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 > [ 2](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 sqrt > > H:\CI\bld\compilers\musl\src\math\i386> > > * > * > *My problem is:* > > Because C __cdecl calling convention vary on x86/amd64 architecture under > win32. > for example, the sqrt function in is expressed as > float __cdecl sqrt(float) > > but in the compiled object file, the final COFF symbol table: > on x86/win32(i686-pc-win32), it's named with "*_sqrt*" > on amd64/win32(amd64-pc-win32), it's named with "*sqrt*" > > > > on linux(*-pc-linux), in ELF symbol table, it's named with "*sqrt*", > > > So I want to control the function name in assembly file, by the means of > Assembly macros, > but I don't know LLVM-MC support which kinds of macros to control the > assembly directives so that I can unified the assembly function name can > match the c function name in object symbol table under different > CPU(x86/x64) and different OS(Win32/Linux/MacOS). > The simplest way is to duplicate the function name is to duplicate the > function name in two form: > .globl _sqrt > .global sqrt > #.type sqrt, at function > _sqrt: > sqrt: fldl 4(%esp) > But that will leading redundant object symbol name. > besides, the* .type *didn't support under COFF symbol table, so how did I > use assembly macro to comment it out when we are targeting COFF object but > reserved when we are targeting ELF. > didn't know if Mach-O support for this directive. > > -- > 此致 > 礼 > 罗勇刚 > Yours > sincerely, > Yonggang Luo > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131022/9855ec3f/attachment.html>
罗勇刚(Yonggang Luo)
2013-Oct-23 02:58 UTC
[LLVMdev] How to use clang -intergrated-as to compile cross-(os/target) assembly file.
2013/10/23 Reid Kleckner <rnk at google.com>> I don't think we should attempt to mangle symbols declared in assembly > source files. If you're writing assembly, you will need to handle ABI >Sorry for the unclear statements, I didn't means the assembler to mangle symbols declared in assembly source files, I means directly use assembly directive to choice which symbol should be used. The compiler just need to follow the directive. For example, in assembly files, there is a directive https://sourceware.org/binutils/docs-2.23.1/as/If.html#If to act like C macro #ifdef #if, so i wanna to know how to use this directive to detect if it's target to x86/win32. if that's true, then I can control which code to be generate.> portability, including the _ prefix on win32 x86. >> > clang will run the C preprocessor for you if you use the .S file suffix > (case matters). > > On Tue, Oct 22, 2013 at 7:08 AM, 罗勇刚(Yonggang Luo) <luoyonggang at gmail.com>wrote: > >> For example, I execute the following command sequences: >> >> H:\CI\bld\compilers\musl\src\math\i386>type sqrt.s >> #.globl _sqrt >> .global sqrt >> #.type sqrt, at function >> #_sqrt: >> sqrt: fldl 4(%esp) >> fsqrt >> fstsw %ax >> sub $12,%esp >> fld %st(0) >> fstpt (%esp) >> mov (%esp),%ecx >> and $0x7ff,%ecx >> cmp $0x400,%ecx >> jnz 1f >> and $0x200,%eax >> sub $0x100,%eax >> sub %eax,(%esp) >> fstp %st(0) >> fldt (%esp) >> 1: add $12,%esp >> fstpl 4(%esp) >> fldl 4(%esp) >> ret >> >> H:\CI\bld\compilers\musl\src\math\i386>type sqrt.c >> float __cdecl sqrt(float z) >> { >> return 0.0; >> } >> H:\CI\bld\compilers\musl\src\math\i386>clang -integrated-as -c -v >> --target=i686 >> -pc-win32 sqrt.s >> clang version 3.4 (trunk) >> Target: i686-pc-win32 >> Thread model: posix >> "C:\Program Files (x86)\LLVM 3.4.svn\bin\clang.exe" -cc1as -triple >> i686-pc-win3 >> 2 -filetype obj -main-file-name sqrt.s -target-cpu pentium4 >> -fdebug-compilation- >> dir "H:\\CI\\bld\\compilers\\musl\\src\\math\\i386" -dwarf-debug-producer >> clang >> version 3.4 (trunk) -o sqrt.o sqrt.s >> >> H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o >> >> sqrt.o: file format COFF-i386 >> >> Contents of section .text: >> 0000 dd442404 d9fa9bdf e083ec0c d9c0db3c .D$............< >> 0010 248b0c24 81e1ff07 000081f9 00040000 $..$............ >> 0020 75122500 0200002d 00010000 290424dd u.%....-....).$. >> 0030 d8db2c24 83c40cdd 5c2404dd 442404c3 ..,$....\$..D$.. >> SYMBOL TABLE: >> [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text >> AUX scnlen 0x40 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 >> [ 2](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 sqrt >> >> H:\CI\bld\compilers\musl\src\math\i386>clang --target=i686-pc-win32 -c >> sqrt.c >> sqrt.c:1:15: warning: incompatible redeclaration of library function >> 'sqrt' >> [-Wincompatible-library-redeclaration] >> float __cdecl sqrt(float z) >> ^ >> sqrt.c:1:15: note: 'sqrt' is a builtin with type 'double (double)' >> 1 warning generated. >> >> H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o >> >> sqrt.o: file format COFF-i386 >> >> Contents of section .text: >> 0000 5589e583 ec08f30f 1045080f 57c9f30f U........E..W... >> 0010 1145fcd9 eef30f11 4df883c4 085dc3 .E......M....]. >> SYMBOL TABLE: >> [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text >> AUX scnlen 0x1f nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 >> [ 2](sec -1)(fl 0x00)(ty 0)(scl 3) (nx 0) 0x00000001 @feat.00 >> [ 3](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 _sqrt >> >> H:\CI\bld\compilers\musl\src\math\i386> >> H:\CI\bld\compilers\musl\src\math\i386>clang -integrated-as -c -v >> --target=amd6 >> 4-pc-win32 sqrt.s >> clang version 3.4 (trunk) >> Target: amd64-pc-win32 >> Thread model: posix >> "C:\Program Files (x86)\LLVM 3.4.svn\bin\clang.exe" -cc1as -triple >> amd64-pc-win >> 32 -filetype obj -main-file-name sqrt.s -target-cpu x86-64 >> -fdebug-compilation-d >> ir "H:\\CI\\bld\\compilers\\musl\\src\\math\\i386" -dwarf-debug-producer >> clang v >> ersion 3.4 (trunk) -o sqrt.o sqrt.s >> >> H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o >> >> sqrt.o: file format COFF-x86-64 >> >> Contents of section .text: >> 0000 67dd4424 04d9fa9b dfe083ec 0cd9c067 g.D$...........g >> 0010 db3c2467 8b0c2481 e1ff0700 0081f900 .<$g..$......... >> 0020 04000075 14250002 00002d00 01000067 ...u.%....-....g >> 0030 290424dd d867db2c 2483c40c 67dd5c24 ).$..g.,$...g.\$ >> 0040 0467dd44 2404c3 .g.D$.. >> SYMBOL TABLE: >> [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text >> AUX scnlen 0x47 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 >> [ 2](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 sqrt >> >> H:\CI\bld\compilers\musl\src\math\i386>clang --target=amd64-pc-win32 -c >> sqrt.c >> sqrt.c:1:15: warning: incompatible redeclaration of library function >> 'sqrt' >> [-Wincompatible-library-redeclaration] >> float __cdecl sqrt(float z) >> ^ >> sqrt.c:1:15: note: 'sqrt' is a builtin with type 'double (double)' >> 1 warning generated. >> >> H:\CI\bld\compilers\musl\src\math\i386>llvm-objdump -s -r -t sqrt.o >> >> sqrt.o: file format COFF-x86-64 >> >> Contents of section .text: >> 0000 554889e5 50f30f11 45fc0f57 c04883c4 UH..P...E..W.H.. >> 0010 085dc3 .]. >> SYMBOL TABLE: >> [ 0](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text >> AUX scnlen 0x13 nreloc 0 nlnno 0 checksum 0x0 assoc 1 comdat 0 >> [ 2](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x00000000 sqrt >> >> H:\CI\bld\compilers\musl\src\math\i386> >> >> * >> * >> *My problem is:* >> >> Because C __cdecl calling convention vary on x86/amd64 architecture under >> win32. >> for example, the sqrt function in is expressed as >> float __cdecl sqrt(float) >> >> but in the compiled object file, the final COFF symbol table: >> on x86/win32(i686-pc-win32), it's named with "*_sqrt*" >> on amd64/win32(amd64-pc-win32), it's named with "*sqrt*" >> >> >> >> on linux(*-pc-linux), in ELF symbol table, it's named with "*sqrt*", >> >> >> So I want to control the function name in assembly file, by the means of >> Assembly macros, >> but I don't know LLVM-MC support which kinds of macros to control the >> assembly directives so that I can unified the assembly function name can >> match the c function name in object symbol table under different >> CPU(x86/x64) and different OS(Win32/Linux/MacOS). >> The simplest way is to duplicate the function name is to duplicate the >> function name in two form: >> .globl _sqrt >> .global sqrt >> #.type sqrt, at function >> _sqrt: >> sqrt: fldl 4(%esp) >> But that will leading redundant object symbol name. >> besides, the* .type *didn't support under COFF symbol table, so how did >> I use assembly macro to comment it out when we are targeting COFF object >> but reserved when we are targeting ELF. >> didn't know if Mach-O support for this directive. >> >> -- >> 此致 >> 礼 >> 罗勇刚 >> Yours >> sincerely, >> Yonggang Luo >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> >-- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131023/f9955943/attachment.html>
Possibly Parallel Threads
- [LLVMdev] How to use clang -intergrated-as to compile cross-(os/target) assembly file.
- [LLVMdev] How to use clang -intergrated-as to compile cross-(os/target) assembly file.
- [LLVMdev] LLVMdev Digest, Vol 112, Issue 59
- [LLVMdev] non-POD type with llvm-objdump
- [LLVMdev] CLang/LLVM SVN for today no longer works on OS X 10.7.4