/* -----------------------------------------------------------------------------
- * $Id: Linker.c,v 1.85 2002/03/29 20:46:50 krasimir Exp $
+ * $Id: Linker.c,v 1.88 2002/04/23 17:33:54 ken Exp $
*
* (c) The GHC Team, 2000, 2001
*
SymX(divExactIntegerzh_fast) \
SymX(divModIntegerzh_fast) \
SymX(forkzh_fast) \
+ SymX(forkProcesszh_fast) \
SymX(freeHaskellFunctionPtr) \
SymX(freeStablePtr) \
SymX(gcdIntegerzh_fast) \
SymX(minusIntegerzh_fast) \
SymX(mkApUpd0zh_fast) \
SymX(myThreadIdzh_fast) \
+ SymX(labelThreadzh_fast) \
SymX(newArrayzh_fast) \
SymX(newBCOzh_fast) \
SymX(newByteArrayzh_fast) \
&& i != ehdr->e_shstrndx
/* Ignore string tables named .stabstr, as they contain
debugging info. */
- && 0 != strncmp(".stabstr", sh_strtab + shdr[i].sh_name, 8)
+ && 0 != memcmp(".stabstr", sh_strtab + shdr[i].sh_name, 8)
) {
ptr = ehdrC + shdr[i].sh_offset;
break;
&& i != ehdr->e_shstrndx
/* Ignore string tables named .stabstr, as they contain
debugging info. */
- && 0 != strncmp(".stabstr", sh_strtab + shdr[i].sh_name, 8)
+ && 0 != memcmp(".stabstr", sh_strtab + shdr[i].sh_name, 8)
) {
IF_DEBUG(linker,belch(" section %d is a normal string table", i ));
strtab = ehdrC + shdr[i].sh_offset;
for (j = 0; j < nent; j++) {
Elf32_Addr offset = rtab[j].r_offset;
Elf32_Word info = rtab[j].r_info;
+# if defined(sparc_TARGET_ARCH) || defined(DEBUG)
Elf32_Sword addend = rtab[j].r_addend;
+ Elf32_Addr A = addend;
+# endif
Elf32_Addr P = ((Elf32_Addr)targ) + offset;
- Elf32_Addr A = addend; /* Do not delete this; it is used on sparc. */
Elf32_Addr S;
# if defined(sparc_TARGET_ARCH)
/* This #ifdef only serves to avoid unused-var warnings. */
relocation entries that, when done, make the stabs debugging
info point at the right places. We ain't interested in all
dat jazz, mun. */
- if (0 == strncmp(".rel.stab", sh_strtab + shdr[shnum].sh_name, 9))
+ if (0 == memcmp(".rel.stab", sh_strtab + shdr[shnum].sh_name, 9))
continue;
if (shdr[shnum].sh_type == SHT_REL ) {