VirtualBox

Changeset 41696 in vbox for trunk/src/VBox/Additions


Ignore:
Timestamp:
Jun 14, 2012 9:12:58 AM (13 years ago)
Author:
vboxsync
Message:

Additions/solaris/VBoxGuest: make the kernel module dependency handling more generic. Not actually tested yet on i386.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuest/solaris/deps.s

    r41683 r41696  
    1 ; Solaris kernel modules use non-standard ELF constructions to express inter-
    2 ; module dependencies, namely a DT_NEEDED tag inside a relocatable ELF file.
    3 ; The Solaris linker can generate these automatically; since yasm can't
    4 ; produce an ELF file which quite fits Solaris's requirements we create one
    5 ; manually using flat binary output format.
     1; $Id$
     2;; @file
     3; Solaris kernel module dependency
    64;
    7 ;; @todo Generate this.
    85
    9 BITS 64
     6;
     7; Copyright (C) 2012 Oracle Corporation
     8;
     9; This file is part of VirtualBox Open Source Edition (OSE), as
     10; available from http://www.virtualbox.org. This file is free software;
     11; you can redistribute it and/or modify it under the terms of the GNU
     12; General Public License (GPL) as published by the Free Software
     13; Foundation, in version 2 as it comes in the "COPYING" file of the
     14; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
     15; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
     16;
    1017
    11 elf_hdr:          ; elf64_hdr structure
    12  db 7fh, "ELF"    ; e_ident
    13  dd 010102h, 0, 0 ; e_ident
    14  dw 1             ; e_type ET_REL
    15  dw 62            ; e_machine EM_X86_64
    16  dd 1             ; e_version EV_CURRENT
    17  dq 0             ; e_entry
    18  dq 0             ; e_phoff
    19  dq sect_hdr - $$ ; e_shoff
    20  dd 0             ; e_flags
    21  dw elf_hsize     ; e_ehsize
    22  dw 0             ; e_phentsize
    23  dw 0             ; e_phnum
    24  dw 40h           ; e_shentsize
    25  dw 4             ; e_shnum
    26  dw 1             ; e_shstrndx section .shstrtab
    27 elf_hsize equ $ - elf_hdr
     18%include "iprt/solaris/kmoddeps.mac"
    2819
    29 sect_hdr:         ; elf64_shdr structure
    30  times 40h db 0   ; undefined section
     20kmoddeps_header  ; ELF header, section table and shared string table
    3121
    32  dd str_shstrtab  ; sh_name .shstrtab
    33  dd 3             ; sh_type SHT_STRTAB
    34  dq 20h           ; sh_flags SHF_STRINGS
    35  dq 0             ; sh_addr
    36  dq shstrtab - $$ ; sh_offset
    37  dq shstrtab_size ; sh_size
    38  dd 0             ; sh_link
    39  dd 0             ; sh_info
    40  dq 1             ; sh_addralign
    41  dq 0             ; sh_entsize
     22kmoddeps_dynstr_start  ; ELF .dynstr section
     23kmoddeps_dynstr_string str_misc_ctf, "misc/ctf"
     24kmoddeps_dynstr_end
    4225
    43  dd str_dynstr    ; sh_name .dynstr
    44  dd 3             ; sh_type SHT_STRTAB
    45  dq 20h           ; sh_flags SHF_STRINGS
    46  dq 0             ; sh_addr
    47  dq dynstr - $$   ; sh_offset
    48  dq dynstr_size   ; sh_size
    49  dd 0             ; sh_link
    50  dd 0             ; sh_info
    51  dq 1             ; sh_addralign
    52  dq 0             ; sh_entsize
     26kmoddeps_dynamic_start  ; ELF .dynamic section
     27kmoddeps_dynamic_needed str_misc_ctf
     28kmoddeps_dynamic_end
    5329
    54  dd str_dynamic   ; sh_name .dynamic
    55  dd 6             ; sh_type SHT_DYNAMIC
    56  dq 1             ; sh_flags SHF_WRITE
    57  dq 0             ; sh_addr
    58  dq dynamic - $$  ; sh_offset
    59  dq dynamic_size  ; sh_size
    60  dd 2             ; sh_link .dynstr
    61  dd 0             ; sh_info
    62  dq 8             ; sh_addralign
    63  dq 0             ; sh_entsize
    64  
    65 shstrtab:
    66 str_shstrtab equ $ - shstrtab
    67  db ".shstrtab", 0
    68 str_dynstr equ $ - shstrtab
    69  db ".dynstr", 0
    70 str_dynamic equ $ - shstrtab
    71  db ".dynamic", 0
    72 shstrtab_size equ $ - shstrtab
    73 
    74 dynstr:
    75  db 0
    76 str_misc_ctf equ $ - dynstr
    77  db "misc/ctf", 0
    78 dynstr_size equ $ - dynstr
    79 
    80 dynamic:
    81  dd 1, 0         ; DT_NEEDED
    82  dd str_misc_ctf
    83  dd 0            ; padding
    84  dd 1ah, 0       ; DT_FLAGS
    85  dd 4, 0         ; TEXTREL
    86  dd 6ffffffbh, 0 ; DT_FLAGS1
    87  dd 0, 0
    88  dd 601900h, 0   ; SUNW_STRPAD
    89  dd 200h, 0
    90  dd 601b00h, 0   ; SUNW_LDMACH
    91  dd 0x3e, 0
    92  dd 0, 0, 0, 0   ; padding 5
    93  dd 0, 0, 0, 0   ; padding 6
    94  dd 0, 0, 0, 0   ; padding 7
    95  dd 0, 0, 0, 0   ; padding 8
    96  dd 0, 0, 0, 0   ; padding 9
    97  dd 0, 0, 0, 0   ; padding 10
    98  dd 0, 0, 0, 0   ; padding 11
    99  dd 0, 0, 0, 0   ; padding 12
    100  dd 0, 0, 0, 0   ; padding 13
    101  dd 0, 0, 0, 0   ; padding 14
    102  dd 0, 0, 0, 0   ; padding 15
    103 dynamic_size equ $ - dynamic
    104 
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette