Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Apr 2004 12:35:33 -0800 (PST)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 50211 for review
Message-ID:  <200404022035.i32KZXOY094423@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=50211

Change 50211 by peter@peter_hammer on 2004/04/02 12:34:52

	de-printf.  I'm pretty sure my bugs are elsewhere now.

Affected files ...

.. //depot/projects/hammer/sys/amd64/amd64/elf_machdep.c#19 edit
.. //depot/projects/hammer/sys/kern/link_elf_obj.c#27 edit

Differences ...

==== //depot/projects/hammer/sys/amd64/amd64/elf_machdep.c#19 (text+ko) ====

@@ -137,13 +137,11 @@
 
 
 		case R_X86_64_NONE:	/* none */
-printf("R_X86_64_NONE\n");
 			break;
 
 		case R_X86_64_64:		/* S + A */
 			addr = lu(lf, symidx, 1);
 			val = addr + addend;
-printf("R_X86_64_64 %p -> (addr 0x%lx + addend 0x%lx) = 0x%lx\n", where, addr, addend, val);
 			if (addr == 0)
 				return -1;
 			if (*where != val)
@@ -154,7 +152,6 @@
 			addr = lu(lf, symidx, 1);
 			where32 = (Elf32_Addr *)where;
 			val32 = (Elf32_Addr)(addr + addend - (Elf_Addr)where);
-printf("R_X86_64_PC32: %p -> (addr 0x%lx, addend 0x%lx - where) = 0x%x\n", where, addr, addend, val32);
 			if (addr == 0)
 				return -1;
 			if (*where32 != val32)
@@ -165,7 +162,6 @@
 			addr = lu(lf, symidx, 1);
 			val32 = (Elf32_Addr)(addr + addend);
 			where32 = (Elf32_Addr *)where;
-printf("R_X86_64_32: %p -> (addr 0x%lx + addend 0x%lx) = 0x%x\n", where, addr, addend, val32);
 			if (addr == 0)
 				return -1;
 			if (*where32 != val32)
@@ -183,7 +179,6 @@
 
 		case R_X86_64_GLOB_DAT:	/* S */
 			addr = lu(lf, symidx, 1);
-printf("R_X86_64_GLOB_DAT: %p -> addr 0x%lx\n", where, addr);
 			if (addr == 0)
 				return -1;
 			if (*where != addr)
@@ -193,7 +188,6 @@
 		case R_X86_64_RELATIVE:	/* B + A */
 			addr = relocbase + addend;
 			val = addr;
-printf("R_X86_64_RELATIVE: %p -> 0x%lx\n", where, val);
 			if (*where != val)
 				*where = val;
 			break;

==== //depot/projects/hammer/sys/kern/link_elf_obj.c#27 (text+ko) ====

@@ -236,7 +236,6 @@
 	}
 #endif
 
-printf("link_elf_obj: begin!\n");
 	/* Read the elf header from the file. */
 	hdr = malloc(sizeof(*hdr), M_LINKER, M_WAITOK);
 	if (hdr == NULL) {
@@ -281,8 +280,6 @@
 		goto out;
 	}
 
-printf("elf_load_obj: initial checks look ok!\n");
-
 	lf = linker_make_file(filename, &link_elf_class);
 	if (!lf) {
 		error = ENOMEM;
@@ -303,7 +300,6 @@
 		goto out;
 	}
 	shdr = malloc(nbytes, M_LINKER, M_WAITOK | M_ZERO);
-printf("section table %d bytes allocated at %p\n", nbytes, shdr);
 	if (shdr == NULL) {
 		error = ENOMEM;
 		goto out;
@@ -317,7 +313,6 @@
 		error = ENOEXEC;
 		goto out;
 	}
-printf("section table read in ok\n");
 
 	/* Scan the section header for information and table sizing. */
 	nsym = 0;
@@ -335,7 +330,6 @@
 			nsym++;
 			symtabindex = i;
 			symstrindex = shdr[i].sh_link;
-printf("[symtab %d peer is %d]\n", i, symstrindex);
 			break;
 		case SHT_REL:
 			ef->nrel++;
@@ -345,12 +339,8 @@
 			break;
 		case SHT_STRTAB:
 			break;
-		default:
-printf("scan: unknown section type %d\n", shdr[i].sh_type);
-			break;
 		}
 	}
-printf("finished scan 1\n");
 	if (ef->nprogtab == 0 && ef->nnobittab == 0) {
 		link_elf_error("file has no contents");
 		error = ENOEXEC;
@@ -384,11 +374,9 @@
 	/* Space for symbol table */
 	ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym);
 	ef->ddbsymtab = malloc(shdr[symtabindex].sh_size, M_LINKER, M_WAITOK);
-printf("symbol table at %p, size 0x%lx\n", ef->ddbsymtab, shdr[symtabindex].sh_size);
 
 	ef->ddbstrcnt = shdr[symstrindex].sh_size;
 	ef->ddbstrtab = malloc(shdr[symstrindex].sh_size, M_LINKER, M_WAITOK);
-printf("string table at %p, size 0x%lx\n", ef->ddbstrtab, shdr[symstrindex].sh_size);
 
 	if (ef->ddbsymtab == NULL || ef->ddbstrtab == NULL) {
 		error = ENOMEM;
@@ -405,7 +393,6 @@
 			error = ENOMEM;
 			goto out;
 		}
-printf("reading shstrtab\n");
 		error = vn_rdwr(UIO_READ, nd.ni_vp,
 		    ef->shstrtab, shdr[shstrindex].sh_size, shdr[shstrindex].sh_offset,
 		    UIO_SYSSPACE, IO_NODELOCKED, td->td_ucred, NOCRED,
@@ -425,10 +412,8 @@
 		case SHT_PROGBITS:
 		case SHT_NOBITS:
 			alignmask = shdr[i].sh_addralign - 1;
-printf("addralign %ld mask %d\n", shdr[i].sh_addralign, alignmask);
 			mapsize += alignmask;
 			mapsize &= ~alignmask;
-printf("mapsize now at %ld\n", mapsize);
 			break;
 		}
 
@@ -443,7 +428,6 @@
 				ef->progtab[pb].name = ef->shstrtab + shdr[i].sh_name;
 			else
 				ef->progtab[pb].name = "<<PROGBITS>>";
-printf("progbits at %ld, sec %d, name %s\n", mapsize, ef->progtab[pb].sec, ef->progtab[pb].name);
 			mapsize += shdr[i].sh_size;
 			pb++;
 			break;
@@ -456,13 +440,11 @@
 				ef->nobittab[nb].name = ef->shstrtab + shdr[i].sh_name;
 			else
 				ef->nobittab[nb].name = "<<NOBITS>>";
-printf("nobits at %ld, sec %d name %s\n", mapsize, ef->nobittab[nb].sec, ef->nobittab[nb].name);
 			mapsize += shdr[i].sh_size;
 			nb++;
 			break;
 		case SHT_REL:
 			ef->reltab[rl].rel = malloc(shdr[i].sh_size, M_LINKER, M_WAITOK);
-printf("rel %ld allocated at %p\n", shdr[i].sh_size, ef->reltab[rl].rel);
 			ef->reltab[rl].fileoff = shdr[i].sh_offset;
 			ef->reltab[rl].filesz = shdr[i].sh_size;
 			ef->reltab[rl].sec = shdr[i].sh_info;
@@ -470,7 +452,6 @@
 			break;
 		case SHT_RELA:
 			ef->relatab[ra].rela = malloc(shdr[i].sh_size, M_LINKER, M_WAITOK);
-printf("rela %ld allocated at %p\n", shdr[i].sh_size, ef->relatab[ra].rela);
 			ef->relatab[ra].fileoff = shdr[i].sh_offset;
 			ef->relatab[ra].filesz = shdr[i].sh_size;
 			ef->relatab[ra].sec = shdr[i].sh_info;
@@ -512,20 +493,14 @@
 	    (vm_offset_t)mapbase + round_page(mapsize),
 	    VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES);
 
-printf("final mapbase %p, final mapsize %ld\n", mapbase, mapsize);
-
 	/* Add the base address to the previously calculated/aligned offsets */
-	for (i = 0; i < ef->nprogtab; i++) {
+	for (i = 0; i < ef->nprogtab; i++)
 		ef->progtab[i].addr = mapbase + (uintptr_t)ef->progtab[i].addr;
-printf("progtab[%d] at %p\n", i, ef->progtab[i].addr);
-	}
-	for (i = 0; i < ef->nnobittab; i++) {
+
+	for (i = 0; i < ef->nnobittab; i++)
 		ef->nobittab[i].addr = mapbase + (uintptr_t)ef->nobittab[i].addr;
-printf("nobittab[%d] at %p\n", i, ef->nobittab[i].addr);
-	}
 	
 
-printf("reading symbols\n");
 	/* Load the symbol table. */
 	error = vn_rdwr(UIO_READ, nd.ni_vp,
 	    (void *)ef->ddbsymtab, shdr[symtabindex].sh_size, shdr[symtabindex].sh_offset,
@@ -533,7 +508,6 @@
 	    &resid, td);
 	if (error)
 		goto out;
-printf("reading strings\n");
 	error = vn_rdwr(UIO_READ, nd.ni_vp,
 	    ef->ddbstrtab, shdr[symstrindex].sh_size, shdr[symstrindex].sh_offset,
 	    UIO_SYSSPACE, IO_NODELOCKED, td->td_ucred, NOCRED,
@@ -543,7 +517,6 @@
 
 	/* Read in the text/data/set/etc sections */
 	for (i = 0; i < ef->nprogtab; i++) {
-printf("reading progbits %d\n", i);
 		error = vn_rdwr(UIO_READ, nd.ni_vp,
 		    ef->progtab[i].addr,
 		    ef->progtab[i].filesz,
@@ -559,7 +532,6 @@
 	 * usually not both.
 	 */
 	for (i = 0; i < ef->nrel; i++) {
-printf("reading rel segment %d\n", i);
 		error = vn_rdwr(UIO_READ, nd.ni_vp,
 		    (void *)ef->reltab[i].rel,
 		    ef->reltab[i].filesz,
@@ -570,7 +542,6 @@
 			goto out;
 	}
 	for (i = 0; i < ef->nrela; i++) {
-printf("reading rela segment %d\n", i);
 		error = vn_rdwr(UIO_READ, nd.ni_vp,
 		    (void *)ef->relatab[i].rela,
 		    ef->relatab[i].filesz,
@@ -585,33 +556,27 @@
 	lf->address = ef->address = mapbase;
 	lf->size = mapsize;
 
-printf("do intra-module relocs\n");
 	/* Local intra-module relocations */
 	link_elf_reloc_local(lf);
 
-printf("load dependencies\n");
 	/* Pull in dependencies */
 	error = linker_load_dependencies(lf);
 	if (error)
 		goto out;
 
-printf("do external relocs\n");
 	/* External relocations */
 	error = relocate_file(ef);
 	if (error)
 		goto out;
 
-printf("notify MD code\n");
 	/* Notify MD code that a module is being loaded. */
 	error = elf_cpu_load_file(lf);
 	if (error)
 		goto out;
 
-printf("HOLY SHIT! WE MADE IT!!!\n");
 	*result = lf;
 
 out:
-printf("link_elf_obj: finishing up! error = %d\n", error);
 	if (error && lf)
 		linker_file_unload(lf);
 	if (hdr)
@@ -693,13 +658,10 @@
 	/* Perform relocations without addend if there are any: */
 	for (i = 0; i < ef->nrel; i++) {
 		rel = ef->reltab[i].rel;
-printf("==============================\n");
-printf("doing rel relocation block %d: %p, size %ld\n", i, rel, ef->reltab[i].filesz);
 		if (rel) {
 			rellim = (const Elf_Rel *)((const char *)rel + ef->reltab[i].filesz);
 			base = findbase(ef, ef->reltab[i].sec);
 			while (rel < rellim) {
-printf("rel doing: %p\n", rel);
 				symidx = ELF_R_SYM(rel->r_info);
 				if (symidx < ef->ddbsymcnt) {
 					sym = ef->ddbsymtab + symidx;
@@ -714,19 +676,15 @@
 				rel++;
 			}
 		}
-printf("\n");
 	}
 
 	/* Perform relocations with addend if there are any: */
 	for (i = 0; i < ef->nrela; i++) {
 		rela = ef->relatab[i].rela;
-printf("\n==============================\n");
-printf("doing rela relocation block %d, %p, size %ld\n", i, rela, ef->relatab[i].filesz);
 		if (rela) {
 			relalim = (const Elf_Rela *)((const char *)rela + ef->relatab[i].filesz);
 			base = findbase(ef, ef->relatab[i].sec);
 			while (rela < relalim) {
-printf("rela doing: %p\n", rela);
 				symidx = ELF_R_SYM(rela->r_info);
 				if (symidx < ef->ddbsymcnt) {
 					sym = ef->ddbsymtab + symidx;
@@ -741,10 +699,8 @@
 				rela++;
 			}
 		}
-printf("\n");
 	}
 
-printf("relocate_file finished\n");
 	return 0;
 }
 
@@ -836,8 +792,6 @@
 	void **start, **stop;
 	int i, count;
 
-printf("lookup_set: name %s\n", name);
-
 	/* Relative to section number */
 	for (i = 0; i < ef->nprogtab; i++) {
 		if ((strncmp(ef->progtab[i].name, "set_", 4) == 0) &&
@@ -845,7 +799,6 @@
 			start  = (void **)ef->progtab[i].addr;
 			stop = (void **)((char *)ef->progtab[i].addr + ef->progtab[i].filesz);
 			count = stop - start;
-printf("FOUND: section %d start %p stop %p count %d\n", i, start, stop, count);
 			if (startp)
 				*startp = start;
 			if (stopp)
@@ -911,7 +864,6 @@
 		for (i = 0; i < ef->nprogtab; i++) {
 			if (sym->st_shndx == ef->progtab[i].sec) {
 				ret = (Elf_Addr)ef->progtab[i].addr;
-printf("STB_LOCAL: sym %p idx %lx -> progbits section '%s', base 0x%lx\n", sym, symidx, ef->progtab[i].name, ret);
 				break;
 			}
 		}
@@ -919,7 +871,6 @@
 			for (i = 0; i < ef->nnobittab; i++) {
 				if (sym->st_shndx == ef->nobittab[i].sec) {
 					ret = (Elf_Addr)ef->nobittab[i].addr;
-printf("STB_LOCAL: sym %p idx %lx -> nobits section '%s', base 0x%lx\n", sym, symidx, ef->nobittab[i].name, ret);
 					break;
 				}
 			}
@@ -934,7 +885,6 @@
 		if (*symbol == 0)
 			return (0);
 		ret = ((Elf_Addr)linker_file_lookup_symbol(lf, symbol, deps));
-printf("STB_GLOBAL: sym %p idx %lx name '%s' -> 0x%lx\n", sym, symidx, symbol, ret);
 		return ret;
 
 	case STB_WEAK:
@@ -942,7 +892,6 @@
 		return (0);
 
 	default:
-printf("UNKNOWN BINDING %d\n", ELF64_ST_BIND(sym->st_info));
 		return (0);
 	}
 }
@@ -966,13 +915,10 @@
 	/* Perform relocations without addend if there are any: */
 	for (i = 0; i < ef->nrel; i++) {
 		rel = ef->reltab[i].rel;
-printf("==============================\n");
-printf("doing rel relocation block %d: %p, size %ld\n", i, rel, ef->relatab[i].filesz);
 		if (rel) {
 			rellim = (const Elf_Rel *)((const char *)rel + ef->reltab[i].filesz);
 			base = findbase(ef, ef->reltab[i].sec);
 			while (rel < rellim) {
-printf("rel doing: %p\n", rel);
 				symidx = ELF_R_SYM(rel->r_info);
 				if (symidx < ef->ddbsymcnt) {
 					sym = ef->ddbsymtab + symidx;
@@ -982,19 +928,15 @@
 				rel++;
 			}
 		}
-printf("\n");
 	}
 
 	/* Perform relocations with addend if there are any: */
 	for (i = 0; i < ef->nrela; i++) {
 		rela = ef->relatab[i].rela;
-printf("==============================\n");
-printf("doing rela relocation block %d: %p, size %ld\n", i, rela, ef->relatab[i].filesz);
 		if (rela) {
 			relalim = (const Elf_Rela *)((const char *)rela + ef->relatab[i].filesz);
 			base = findbase(ef, ef->relatab[i].sec);
 			while (rela < relalim) {
-printf("rela doing: %p\n", rela);
 				symidx = ELF_R_SYM(rela->r_info);
 				if (symidx < ef->ddbsymcnt) {
 					sym = ef->ddbsymtab + symidx;
@@ -1004,6 +946,5 @@
 				rela++;
 			}
 		}
-printf("\n");
 	}
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200404022035.i32KZXOY094423>