PATHDocumentation> Release Notes |
/usr/lib/crt1.o:.section_all
/usr/lib/libgcc.a:darwin-tramp.o:section_all
#define MH_SUBSECTIONS_VIA_SYMBOLS 0x2000 /* safe to divide up the sections into
sub-sections via symbols for dead
code stripping */
% otool.NEW -hv a.out
a.out:
Mach header
magic cputype cpusubtype filetype ncmds sizeofcmds flags
MH_MAGIC PPC ALL OBJECT 3 228 SUBSECTIONS_VIA_SYMBOLS
.text
.globl _plus_three
_plus_three:
addi r3, r3, 1
.globl _plus_two
_plus_two:
addi r3, r3, 1
.globl _plus_one
_plus_one:
addi r3, r3, 1
blr
.globl _some_other_routine
_some_other_routine:
blr
.no_dead_strip _my_version_string
.cstring
_my_version_string:
.ascii 'cctools-501'
% nm -m x.o
00000000 (__TEXT,__cstring) non-external [no dead strip] _my_version_string
.section __OBJC, __image_info, regular, no_dead_strip
.section __TEXT, __eh_frame, coalesced, no_toc+strip_static_syms+live_support
.machine ppc970
bge-- foo
-arch ppc
switch.Reference | 1670513 |
Problem | 4.4BSD ar extended format #1 not compatible with compiler tools. |
Description | The 4.4 ar command can create an archive with the base name of an object file that is longer than 16 characters. With the -L option, it produces a format that makes the object file in the archive invisible to various tools, including the static link editor. This can lead to undefined symbols when this archive is linked against. Other tools like nm and ranlib also don't see the long-name object files in the archive. To avoid this problem, ar makes the -T option, which truncates names, a default option. The compiler tools will understand the extended format in future releases. |
Workaround | Do not use the -L option with ar when creating archive libraries. Use the -T option (the default for the Premier release) to tuncate file names or use libtool-static to create archive libraries. |
Reference | 1666993 |
Problem | The Mac OS X assembler is different from ppcasm. |
Description | The major difference is that the Mac OS X assembler is not TOC-based and uses two instructions to load a global or static item. The directives and the syntax of labels and directives of the two assemblers are very different. Also, the Mac OS X assembler is stricter in the parameter types and ranges for instructions. For more on this last topic, see 'Instruction Parameter Differences,' below. |
Workaround | The difference between the Mac OS X assembler and the TOC-based model, plus the differences in directives and syntax, may necessitate significant rewriting of assembly code for the Developer Release. The strict parameter requirements might require rewriting of assembly code for the Developer Release but the resulting code should work with ppcasm. |
Reference | 1670513 |
Problem | BSD 4.4 ar format is not compatible with compiler tools |
Description | The BSD 4.4 ar command, which creates an archive with object file names longer than 16 characters, produces a format that makes the object file invisible to various tools, including the static link editor. This can lead to undefined symbols when a program links against this archive. Other tools like nm and ranlib also don't see the object files with longer names in the archive. |
Workaround | Use the -T option with ar to tuncate file names or use libtool -static to create archive libraries. |
Reference | none |
Problem | Profiling does not work |
Description | Bugs were reported when developers tried to compile, run and produce the profiling information for a program. Among these bigs were kernel panics, gprof(1) not understanding the gmon.out format produced, add_profil(2) system call not working, and other problems. |
r
N), floating point registers,(f
N), condition registers(cr
N), and segment registers(sr
N). However, you can refer to specialregisters by their register number or their special register names.The special register names are in lowercase only (for example,mq
, xer
, lr
, ctr
,and dsisr
).addi
instruction takes a signed immediate valueso it will sign extend its parameter to 32 bits before performing theoperation. If the value 0xffffffff is intended, it would be codedas:tlbiex
, which has been removed fromthe PowerPC architecture, is not supported by the Mac OS X assembler.This instruction is assembled by ppcasm.