-.Dd Sept 2, 2010
+.Dd March 7, 2011
.Dt ld 1
.Os Darwin
.Sh NAME
By default the linker moves all zero fill sections to the end of the __DATA segment and configures
them to use no space on disk. This option suppresses that optimization, so zero-filled data occupies
space on disk in a final linked image.
+.It Fl merge_zero_fill_sections
+Causes all zero-fill sections in the __DATA segment to be merged into one __zerofill section.
.El
.Ss Options when creating a dynamic library (dylib)
.Bl -tag
This makes a special kind of main executable that is position independent (PIE). On Mac OS X 10.5 and later, the OS
the OS will load a PIE at a random address each time it is executed. You cannot create a PIE from .o files compiled
with -mdynamic-no-pic. That means the codegen is less optimal, but the address randomization adds some
-security. When targeting Mac OS X 10.7 or later PIE is the default for x86_64 main executables.
+security. When targeting Mac OS X 10.7 or later PIE is the default for main executables.
.It Fl no_pie
-Do not make a position independent executable (PIE). This is the default, except for x86_64 for 10.7 or later.
+Do not make a position independent executable (PIE). This is the default, when targeting 10.6 and earlier.
.It Fl pagezero_size Ar size
By default the linker creates an unreadable segment starting at address zero named __PAGEZERO. Its existence
will cause a bus error if a NULL pointer is dereferenced. The argument
.Bl -tag
.It Fl v
Prints the version of the linker.
-.It Fl no_compact_linkedit
-Normally when targeting Mac OS X 10.6, the linker will generate compact information
-in the __LINKEDIT segment.
-This option causes the linker to instead produce traditional relocation information.
.It Fl allow_heap_execute
Normally i386 main executables will be marked so that the Mac OS X 10.7 and later kernel
will only allow pages with the x-bit to execute instructions. This option overrides that
-behavior and allows instructions on any page to be run.
+behavior and allows instructions on any page to be executed.
.It Fl no_eh_labels
Normally in -r mode, the linker produces .eh labels on all FDEs in the __eh_frame section.
This option suppresses those labels. Those labels are not needed by the Mac OS X 10.6
is complete. Without the option, the linker picks a path and deletes the object file before the linker
tool completes, thus tools such as the debugger or dsymutil will not be able to access the DWARF debug
info in the temporary object file.
+.It Fl page_align_data_atoms
+During development, this option can be used to space out all global variables so each is on a separate page.
+This is useful when analyzing dirty and resident pages. The information can then be used to create an
+order file to cluster commonly used/dirty globals onto the same page(s).
.El
.Ss Obsolete Options
.Bl -tag