jjc@UUNET.UU.NET (James Clark) (05/11/89)
Here are the patches needed to newld.c to make it align doubles
properly on the sparc (these are straight from the old ld.c):
*** newld.c.distrib Thu May 11 10:33:27 1989
--- newld.c Thu May 11 11:06:28 1989
***************
*** 2838,2843 ****
--- 2838,2847 ----
outheader.a_text = text_size;
+ #ifdef sparc
+ data_size = (data_size + sizeof(double) - 1) & ~(sizeof(double)-1);
+ #endif
+
/* Make the data segment address start in memory on a suitable boundary. */
if (! Tdata_flag_specified)
***************
*** 2926,2931 ****
--- 2930,2946 ----
com = (com + sizeof (int) - 1) & (- sizeof (int));
sp->value = data_start + data_size + bss_size;
+ #ifdef sparc
+ /* Make common space aligned. */
+ if (com > 4)
+ {
+ int off = 0;
+
+ off = sp->value & (sizeof (double) - 1);
+ sp->value += off;
+ com += off;
+ }
+ #endif
sp->defined = N_BSS | N_EXT;
bss_size += com;
if (write_map)
James Clark
jjc@jclark.uucp