]> Zhao Yanbai Git Server - minix.git/commitdiff
Fix bitcode support for kernel 98/2798/2
authorLionel Sambuc <lionel@minix3.org>
Thu, 21 Aug 2014 11:35:45 +0000 (13:35 +0200)
committerGerrit Code Review <gerrit@localhost>
Fri, 29 Aug 2014 16:57:03 +0000 (12:57 -0400)
minix/kernel/arch/earm/kernel.lds
minix/kernel/arch/i386/kernel.lds
minix/kernel/arch/i386/usermapped_data_arch.c
minix/kernel/arch/i386/usermapped_glo_ipc.S
minix/kernel/usermapped_data.c

index 9070b38bbf1779b88b1e3390a6e2d785adea6f76..b41fcad298ef74c2a6878c8dd423a4eee55f7b07 100644 (file)
@@ -24,9 +24,9 @@ SECTIONS
        . += _kern_offset;
 
        . = ALIGN(4096); usermapped_start = .;
-       .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { usermapped_glo*.o(*) }
+       .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { *(.usermapped_glo) }
        . = ALIGN(4096); usermapped_nonglo_start = .;
-       .usermapped : AT(ADDR(.usermapped) - _kern_offset) { usermapped_*.o(*) }
+       .usermapped : AT(ADDR(.usermapped) - _kern_offset) { *(.usermapped) }
        . = ALIGN(4096); usermapped_end = .;
        .text             : AT(ADDR(.text) - _kern_offset) { *(.text*) }
        _etext = .;
@@ -47,5 +47,4 @@ SECTIONS
        {
                *(.ARM.exidx*)
        }
-
 }
index b38544e7276b62095b0962624bb2acd0340d21ff..24c0c1f90e8ca2c0e0abb89b1c1385522f26e115 100644 (file)
@@ -16,15 +16,15 @@ SECTIONS
 
        .unpaged_text : { unpaged_*.o(.text) }
        .unpaged_data ALIGN(4096) : { unpaged_*.o(.data .rodata*) }
-       .unpaged_bss  ALIGN(4096) : { unpaged_*.o(.bss COMMON) } 
+       .unpaged_bss  ALIGN(4096) : { unpaged_*.o(.bss COMMON) }
        __k_unpaged__kern_unpaged_end = .;
 
        . += _kern_offset;
 
        . = ALIGN(4096); usermapped_start = .;
-       .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { usermapped_glo*.o(*) }
+       .usermapped_glo : AT(ADDR(.usermapped_glo) - _kern_offset) { *(.usermapped_glo) }
        . = ALIGN(4096); usermapped_nonglo_start = .;
-       .usermapped : AT(ADDR(.usermapped) - _kern_offset) { usermapped_*.o(*) }
+       .usermapped : AT(ADDR(.usermapped) - _kern_offset) { *(.usermapped) }
        . = ALIGN(4096); usermapped_end = .;
        .text             : AT(ADDR(.text) - _kern_offset) { *(.text*) }
        .data ALIGN(4096) : AT(ADDR(.data) - _kern_offset) { *(.data .rodata* ) }
index a475787c654cffc7f48051c5f27b12d71bcaffdb..da84ce324fc8e4d5402f94c151eac7c849dfe718 100644 (file)
@@ -1,7 +1,7 @@
 #include "kernel/kernel.h"
 #include "arch_proto.h"
 
-struct minix_ipcvecs minix_ipcvecs_softint = {
+struct minix_ipcvecs minix_ipcvecs_softint __section(".usermapped") = {
        .send           = usermapped_send_softint,
        .receive        = usermapped_receive_softint,
        .sendrec        = usermapped_sendrec_softint,
@@ -11,7 +11,7 @@ struct minix_ipcvecs minix_ipcvecs_softint = {
        .senda          = usermapped_senda_softint
 };
 
-struct minix_ipcvecs minix_ipcvecs_sysenter = {
+struct minix_ipcvecs minix_ipcvecs_sysenter __section(".usermapped") = {
        .send           = usermapped_send_sysenter,
        .receive        = usermapped_receive_sysenter,
        .sendrec        = usermapped_sendrec_sysenter,
@@ -21,7 +21,7 @@ struct minix_ipcvecs minix_ipcvecs_sysenter = {
        .senda          = usermapped_senda_sysenter
 };
 
-struct minix_ipcvecs minix_ipcvecs_syscall = {
+struct minix_ipcvecs minix_ipcvecs_syscall __section(".usermapped") = {
        .send           = usermapped_send_syscall,
        .receive        = usermapped_receive_syscall,
        .sendrec        = usermapped_sendrec_syscall,
index cb3b55b344f9cf1e554518b8d4e47d84dde9522d..a5a1cde1dabaf357f681ac642b236aaee4c6b90f 100644 (file)
@@ -1,6 +1,14 @@
 #include <minix/ipcconst.h>
 #include <machine/asm.h>
 
+/* Redefine _ENTRY to put the following function in the section
+ * ".usermapped_glo". */
+#undef _ENTRY
+#define _ENTRY(x) \
+       _ALIGN_TEXT; .globl x; .type x,@function; x:
+
+.section .usermapped_glo, "wax", @progbits
+
 /**========================================================================* */
 /*                           IPC assembly routines                       * */
 /**========================================================================* */
index bec1696f5cdf0c3334bf185442017670a158da4b..4ee09f6221051e321bb6980e9e0518bba1f1da77 100644 (file)
@@ -1,11 +1,11 @@
 #include "kernel/kernel.h"
 
 /* This is the user-visible struct that has pointers to other bits of data. */
-struct minix_kerninfo minix_kerninfo;
+struct minix_kerninfo minix_kerninfo __section(".usermapped");
 
 /* Kernel information structures. */
-struct kinfo kinfo;               /* kernel information for users */
-struct machine machine;           /* machine information for users */
-struct kmessages kmessages;       /* diagnostic messages in kernel */
-struct loadinfo loadinfo;        /* status of load average */
+struct kinfo kinfo __section(".usermapped");           /* kernel information for users */
+struct machine machine __section(".usermapped");       /* machine information for users */
+struct kmessages kmessages __section(".usermapped");   /* diagnostic messages in kernel */
+struct loadinfo loadinfo __section(".usermapped");     /* status of load average */