PROBLEM: (86688, 78237) (PATCH ID: OSF520-004) ******** This patch fixes two problems with the linker (/usr/bin/ld). The first fix is for programs using _fpdata. When a program references the linker defined symbol _fpdata, but that symbol isn't used by the linker, it ended up being undefined and the link would complete anyway. This linker fix addresses this problem by defining _fpdata as an absolute symbol (ABS) when it is referenced by a program but not needed by the linker itself. Without the linker fix, the _fpdata symbol is defined as: % nm q78237.exe | grep _fpdata _fpdata | 0000000000000000 | U | 0000000000000000 With the linker fix, the _fpdata symbol is defined as: % nm q78237.exe | grep _fpdata _fpdata | 0000000000000000 | A | 0000000000000008 The second fix is for a problem that can cause a linker crash when linking a program with data alignment requirements. Here is an example: % cat align_bug.c #include #include __align(5) long sdata_align_var = 0xdeadbeef; main() { try { printf("a"); } except(printf("b"), 5) { printf("c"); } } % cc -non_shared align_bug.c -lexc ld: build_scnhdr: DATA scnptr bad; Last section was .data New section .xdata should go at 0x44db0 but scnptr is at 0x44dc0 PROBLEM: (89858) (PATCH ID: OSF520-219) ******** When "-update_registry " is specified on the same shared object registry file by concurrent linker processes, each process writes the registry_file. Concurrent writes to the registry file may leave it in a corrupted state. With this patch, the linker now locks the registry file when -lock_registry is specified. This ensures that only one link process at a time can modify the file, thus preventing the corruption. The -lock_registry flag is a new linker flag with this patch. PROBLEM: (94156) (PATCH ID: OSF520-576) ******** A recent patch to the linker (ld) introduced a regression where the linker no longer accepts /dev/null as a filename for the -update_registry flag. The error reported by the linker is: % cc -shared t.o -update_registry /dev/null ld: Cannot fflush, fseek, or ftruncate registry file /dev/null. This patch fixes the error, allowing the use of -update_registry /dev/null. PROBLEM: (93921) (PATCH ID: OSF520-591) ******** This patch fixes a problem in the linker, which may cause segmentation violations in an executable that uses the address of an uninitialized data symbol defined in a shared library as the initial value of a global or static pointer variable. Imported addresses used as initial values in this manner are normally adjusted at runtime by the dynamic loader when a shared library cannot be mapped at its quickstart address. This is the text base address that the linker assumes will be the runtime address for the library. Without this patch, the linker will omit certain dynamic relocations, which are needed by the loader to make the proper address adjustments at runtime. Programs that are susceptible to this bug will run without error as long as all of the dependent shared libraries are loaded at their quickstart addresses. However, a segmentation violation may occur when a shared library cannot be loaded at its quickstart address. It is also possible for this problem to manifest with indeterminate symptoms. The invalid quickstart addresses that could not be adjusted by the loader may, in fact, reference valid address ranges in a different shared library. The symptoms will depend on how the pointer variables are used by the program.