I was talking to Mike, and he asked me to post the requirements to fix NASM to 
work properly with Xcode to the mailing list. 

NASM does not support dead stripping with Xcode. With .S files the 
.subsections_via_symbols directive is used to ensure dead stripping by the 
linker.  The .subsections_via_symbols directive sets the 
MH_SUBSECTIONS_VIA_SYMBOLS flag in the mach_header of the generated .o file. 
There needs to be some way to set the  MH_SUBSECTIONS_VIA_SYMBOLS flag in the 
Mach-O header. .subsections_via_symbols is defined here: 
https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/Assembler/040-Assembler_Directives/asm_directives.html

NASM does not produce any debug information for the macho32 and macho64 output 
formats. The Mach-O object files need to contain DWARF 4, older versions of the 
tools used DWARF 2. 

The Xcode build generates Mach-O object files and links them together into a 
Mach-O. The Mach-O can be wrapped up in a dSYM (single file for debugging, 
including the object files that are not part of the Mach-O). The Mach-O file is 
converted by a tool, mtoc, into a PE/COFF executable. We use the Mach-O/dSYM 
for debugging. We even place the Mach-O UUID in the PE/COFF debug section so we 
can look symbols up via UUID. 

Thanks,

Andrew Fish
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to