diff --git a/tools/mips-relocs.c b/tools/mips-relocs.c
index 442cc8f..6252580 100644
--- a/tools/mips-relocs.c
+++ b/tools/mips-relocs.c
@@ -195,15 +195,13 @@
 int main(int argc, char *argv[])
 {
 	unsigned int i, j, i_rel_shdr, sh_type, sh_entsize, sh_entries;
-	size_t rel_size, rel_actual_size, load_sz;
+	size_t rel_size, rel_actual_size;
 	const char *shstrtab, *sh_name, *rel_pfx;
 	int (*parse_fn)(const void *rel);
 	uint8_t *buf_start, *buf;
 	const Elf32_Ehdr *ehdr32;
 	const Elf64_Ehdr *ehdr64;
 	uintptr_t sh_offset;
-	Elf32_Phdr *phdr32;
-	Elf64_Phdr *phdr64;
 	Elf32_Shdr *shdr32;
 	Elf64_Shdr *shdr64;
 	struct stat st;
@@ -285,8 +283,6 @@
 		goto out_free_relocs;
 	}
 
-	phdr32 = elf + ehdr_field(e_phoff);
-	phdr64 = elf + ehdr_field(e_phoff);
 	shdr32 = elf + ehdr_field(e_shoff);
 	shdr64 = elf + ehdr_field(e_shoff);
 	shstrtab = elf + shdr_field(ehdr_field(e_shstrndx), sh_offset);
@@ -295,7 +291,7 @@
 	for (i = 0; i < ehdr_field(e_shnum); i++) {
 		sh_name = shstr(shdr_field(i, sh_name));
 
-		if (!strcmp(sh_name, ".rel")) {
+		if (!strcmp(sh_name, ".data.reloc")) {
 			i_rel_shdr = i;
 			continue;
 		}
@@ -397,22 +393,12 @@
 	rel_size = shdr_field(i_rel_shdr, sh_size);
 	rel_actual_size = buf - buf_start;
 	if (rel_actual_size > rel_size) {
-		fprintf(stderr, "Relocs overflowed .rel section\n");
-		return -ENOMEM;
-	}
-
-	/* Update the .rel section's size */
-	set_shdr_field(i_rel_shdr, sh_size, rel_actual_size);
-
-	/* Shrink the PT_LOAD program header filesz (ie. shrink u-boot.bin) */
-	for (i = 0; i < ehdr_field(e_phnum); i++) {
-		if (phdr_field(i, p_type) != PT_LOAD)
-			continue;
-
-		load_sz = phdr_field(i, p_filesz);
-		load_sz -= rel_size - rel_actual_size;
-		set_phdr_field(i, p_filesz, load_sz);
-		break;
+		fprintf(stderr, "Relocations overflow available space of 0x%lx (required 0x%lx)!\n",
+			rel_size, rel_actual_size);
+		fprintf(stderr, "Please adjust CONFIG_MIPS_RELOCATION_TABLE_SIZE to at least 0x%lx\n",
+			(rel_actual_size + 0x100) & ~0xFF);
+		err = -ENOMEM;
+		goto out_free_relocs;
 	}
 
 	/* Make sure data is written back to the file */
