Author: mhorne Date: Sun May 31 14:43:04 2020 New Revision: 361661 URL: https://svnweb.freebsd.org/changeset/base/361661
Log: Remove remnant of arm's ELF trampoline The trampoline code used for loading gzipped a.out kernels on arm was removed in r350436. A portion of this code allowed for DDB to find the symbol tables when booting without loader(8), and some of this was untouched in the removal. Remove it now. Differential Revision: https://reviews.freebsd.org/D24950 Modified: head/sys/arm/arm/machdep_boot.c head/sys/arm/include/elf.h head/sys/arm64/arm64/machdep_boot.c head/sys/riscv/riscv/machdep.c Modified: head/sys/arm/arm/machdep_boot.c ============================================================================== --- head/sys/arm/arm/machdep_boot.c Sun May 31 05:02:15 2020 (r361660) +++ head/sys/arm/arm/machdep_boot.c Sun May 31 14:43:04 2020 (r361661) @@ -352,13 +352,12 @@ vm_offset_t fake_preload_metadata(struct arm_boot_params *abp __unused, void *dtb_ptr, size_t dtb_size) { -#ifdef DDB - vm_offset_t zstart = 0, zend = 0; -#endif vm_offset_t lastaddr; int i = 0; static uint32_t fake_preload[35]; + lastaddr = (vm_offset_t)&end; + fake_preload[i++] = MODINFO_NAME; fake_preload[i++] = strlen("kernel") + 1; strcpy((char*)&fake_preload[i++], "kernel"); @@ -373,21 +372,6 @@ fake_preload_metadata(struct arm_boot_params *abp __un fake_preload[i++] = MODINFO_SIZE; fake_preload[i++] = sizeof(uint32_t); fake_preload[i++] = (uint32_t)&end - KERNVIRTADDR; -#ifdef DDB - if (*(uint32_t *)KERNVIRTADDR == MAGIC_TRAMP_NUMBER) { - fake_preload[i++] = MODINFO_METADATA|MODINFOMD_SSYM; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 4); - fake_preload[i++] = MODINFO_METADATA|MODINFOMD_ESYM; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 8); - lastaddr = *(uint32_t *)(KERNVIRTADDR + 8); - zend = lastaddr; - zstart = *(uint32_t *)(KERNVIRTADDR + 4); - db_fetch_ksymtab(zstart, zend); - } else -#endif - lastaddr = (vm_offset_t)&end; if (dtb_ptr != NULL) { /* Copy DTB to KVA space and insert it into module chain. */ lastaddr = roundup(lastaddr, sizeof(int)); Modified: head/sys/arm/include/elf.h ============================================================================== --- head/sys/arm/include/elf.h Sun May 31 05:02:15 2020 (r361660) +++ head/sys/arm/include/elf.h Sun May 31 14:43:04 2020 (r361661) @@ -78,12 +78,6 @@ __ElfType(Auxinfo); #define EF_ARM_EABI_VERSION_UNKNOWN 0 #define EF_ARM_EABI_FREEBSD_MIN 4 -/* - * Magic number for the elf trampoline, chosen wisely to be an immediate - * value. - */ -#define MAGIC_TRAMP_NUMBER 0x5c000003 - #define ET_DYN_LOAD_ADDR 0x500000 /* Flags passed in AT_HWCAP. */ Modified: head/sys/arm64/arm64/machdep_boot.c ============================================================================== --- head/sys/arm64/arm64/machdep_boot.c Sun May 31 05:02:15 2020 (r361660) +++ head/sys/arm64/arm64/machdep_boot.c Sun May 31 14:43:04 2020 (r361661) @@ -84,14 +84,12 @@ static char linux_command_line[LBABI_MAX_COMMAND_LINE static vm_offset_t fake_preload_metadata(void *dtb_ptr, size_t dtb_size) { -#ifdef DDB - vm_offset_t zstart = 0, zend = 0; -#endif vm_offset_t lastaddr; static char fake_preload[256]; caddr_t preload_ptr; size_t size; + lastaddr = (vm_offset_t)&end; preload_ptr = (caddr_t)&fake_preload[0]; size = 0; @@ -108,25 +106,7 @@ fake_preload_metadata(void *dtb_ptr, size_t dtb_size) PRELOAD_PUSH_VALUE(uint32_t, MODINFO_SIZE); PRELOAD_PUSH_VALUE(uint32_t, sizeof(size_t)); PRELOAD_PUSH_VALUE(uint64_t, (size_t)(&end - VM_MIN_KERNEL_ADDRESS)); -#ifdef DDB - if (*(uint64_t *)VM_MIN_KERNEL_ADDRESS == MAGIC_TRAMP_NUMBER) { - PRELOAD_PUSH_VALUE(uint32_t, MODINFO_METADATA|MODINFOMD_SSYM); - PRELOAD_PUSH_VALUE(uint32_t, sizeof(vm_offset_t)); - PRELOAD_PUSH_VALUE(uint64_t, - *(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 4)); - PRELOAD_PUSH_VALUE(uint32_t, MODINFO_METADATA | MODINFOMD_ESYM); - PRELOAD_PUSH_VALUE(uint32_t, sizeof(vm_offset_t)); - PRELOAD_PUSH_VALUE(uint64_t, - *(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 8)); - - lastaddr = *(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 8); - zend = lastaddr; - zstart = *(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 4); - db_fetch_ksymtab(zstart, zend); - } else -#endif - lastaddr = (vm_offset_t)&end; if (dtb_ptr != NULL) { /* Copy DTB to KVA space and insert it into module chain. */ lastaddr = roundup(lastaddr, sizeof(int)); Modified: head/sys/riscv/riscv/machdep.c ============================================================================== --- head/sys/riscv/riscv/machdep.c Sun May 31 05:02:15 2020 (r361660) +++ head/sys/riscv/riscv/machdep.c Sun May 31 14:43:04 2020 (r361661) @@ -729,9 +729,6 @@ vm_offset_t fake_preload_metadata(struct riscv_bootparams *rvbp) { static uint32_t fake_preload[35]; -#ifdef DDB - vm_offset_t zstart = 0, zend = 0; -#endif vm_offset_t lastaddr; size_t fake_size, dtb_size; @@ -750,6 +747,7 @@ fake_preload_metadata(struct riscv_bootparams *rvbp) } while (0) fake_size = 0; + lastaddr = (vm_offset_t)&end; PRELOAD_PUSH_VALUE(uint32_t, MODINFO_NAME); PRELOAD_PUSH_STRING("kernel"); @@ -763,24 +761,6 @@ fake_preload_metadata(struct riscv_bootparams *rvbp) PRELOAD_PUSH_VALUE(uint32_t, MODINFO_SIZE); PRELOAD_PUSH_VALUE(uint32_t, sizeof(size_t)); PRELOAD_PUSH_VALUE(uint64_t, (size_t)((vm_offset_t)&end - KERNBASE)); -#ifdef DDB -#if 0 - /* RISCVTODO */ - if (*(uint32_t *)KERNVIRTADDR == MAGIC_TRAMP_NUMBER) { - fake_preload[i++] = MODINFO_METADATA|MODINFOMD_SSYM; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 4); - fake_preload[i++] = MODINFO_METADATA|MODINFOMD_ESYM; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 8); - lastaddr = *(uint32_t *)(KERNVIRTADDR + 8); - zend = lastaddr; - zstart = *(uint32_t *)(KERNVIRTADDR + 4); - db_fetch_ksymtab(zstart, zend); - } else -#endif -#endif - lastaddr = (vm_offset_t)&end; /* Copy the DTB to KVA space. */ lastaddr = roundup(lastaddr, sizeof(int)); _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"