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"

Reply via email to