Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset e1c0260 in mainline


Ignore:
Timestamp:
2012-07-30T17:33:21Z (9 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master
Children:
6e3b052d
Parents:
b553acc
Message:

improve loader .interp fix

  • suppress the assembler warning by setting @progbits on the .interp section
  • suppress the linker warning by putting the .interp section additionally into the "text" segment
  • use the same ATSIGN convetion as the kernel makefiles use (for consistency)
Location:
uspace
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/arch/abs32le/_link.ld.in

    rb553acc re1c0260  
    1414SECTIONS {
    1515#ifdef LOADER
     16        . = 0x70001000 + SIZEOF_HEADERS;
     17       
    1618        .interp : {
    1719                *(.interp);
    18         } :interp
    19        
    20         . = 0x70001000 + SIZEOF_HEADERS;
     20        } :interp :text
    2121#else
    2222        . = 0x1000 + SIZEOF_HEADERS;
    2323#endif
     24       
    2425        .text : {
    2526                *(.text .text.*);
  • uspace/lib/c/arch/amd64/_link.ld.in

    rb553acc re1c0260  
    1515SECTIONS {
    1616#ifdef LOADER
     17        . = 0x70001000 + SIZEOF_HEADERS;
     18       
    1719        .interp : {
    1820                *(.interp);
    19         } :interp
    20        
    21         . = 0x70001000 + SIZEOF_HEADERS;
     21        } :interp :text
    2222#else
    2323        . = 0x1000 + SIZEOF_HEADERS;
    2424#endif
     25       
    2526        .init : {
    2627                *(.init);
  • uspace/lib/c/arch/arm32/_link.ld.in

    rb553acc re1c0260  
    1414SECTIONS {
    1515#ifdef LOADER
     16        . = 0x70001000 + SIZEOF_HEADERS;
     17       
    1618        .interp : {
    1719                *(.interp);
    18         } :interp
    19        
    20         . = 0x70001000 + SIZEOF_HEADERS;
     20        } :interp :text
    2121#else
    2222        . = 0x1000 + SIZEOF_HEADERS;
    2323#endif
     24       
    2425        .init : {
    2526                *(.init);
  • uspace/lib/c/arch/ia32/_link.ld.in

    rb553acc re1c0260  
    1919
    2020SECTIONS {
    21 #if defined(LOADER) || defined(DLEXE)
    22         .interp : {
    23                 *(.interp);
    24         } :interp
    25 #endif
    2621#ifdef LOADER
    2722        . = 0x70001000 + SIZEOF_HEADERS;
     
    2924        . = 0x1000 + SIZEOF_HEADERS;
    3025#endif
     26       
     27#if defined(LOADER) || defined(DLEXE)
     28        .interp : {
     29                *(.interp);
     30        } :interp :text
     31#endif
     32       
    3133        .init : {
    3234                *(.init);
  • uspace/lib/c/arch/ia64/_link.ld.in

    rb553acc re1c0260  
    1414SECTIONS {
    1515#ifdef LOADER
     16        . = 0x800000000 + SIZEOF_HEADERS;
     17       
    1618        .interp : {
    1719                *(.interp);
    18         } :interp
    19        
    20         . = 0x800000000 + SIZEOF_HEADERS;
     20        } :interp :text
    2121#else
    2222        . = 0x4000 + SIZEOF_HEADERS;
    2323#endif
     24       
    2425        /*
    2526         * XXX This is just a work around. Problem: .init section does not
     
    2728         */
    2829        . = ALIGN(., 16);
    29 
     30       
    3031        .init : {
    3132                *(.init);
  • uspace/lib/c/arch/mips32/_link.ld.in

    rb553acc re1c0260  
    1414SECTIONS {
    1515#ifdef LOADER
     16        . = 0x70004000 + SIZEOF_HEADERS;
     17       
    1618        .interp : {
    1719                *(.interp);
    18         } :interp
    19        
    20         . = 0x70004000 + SIZEOF_HEADERS;
     20        } :interp :text
    2121#else
    2222        . = 0x4000 + SIZEOF_HEADERS;
    2323#endif
     24       
    2425        .init : {
    2526                *(.init);
  • uspace/lib/c/arch/mips64/_link.ld.in

    rb553acc re1c0260  
    1515SECTIONS {
    1616#ifdef LOADER
     17        . = 0x70004000 + SIZEOF_HEADERS;
     18       
    1719        .interp : {
    1820                *(.interp);
    19         } :interp
    20        
    21         . = 0x70004000 + SIZEOF_HEADERS;
     21        } :interp :text
    2222#else
    2323        . = 0x4000 + SIZEOF_HEADERS;
    2424#endif
     25       
    2526        .init : {
    2627                *(.init);
  • uspace/lib/c/arch/ppc32/_link.ld.in

    rb553acc re1c0260  
    1515SECTIONS {
    1616#ifdef LOADER
     17        . = 0x70001000 + SIZEOF_HEADERS;
     18       
    1719        .interp : {
    1820                *(.interp);
    19         } :interp
    20        
    21         . = 0x70001000 + SIZEOF_HEADERS;
     21        } :interp :text
    2222#else
    2323        . = 0x1000 + SIZEOF_HEADERS;
    2424#endif
     25       
    2526        .init : {
    2627                *(.init);
  • uspace/lib/c/arch/sparc64/_link.ld.in

    rb553acc re1c0260  
    1414SECTIONS {
    1515#ifdef LOADER
     16        . = 0x70004000 + SIZEOF_HEADERS;
     17       
    1618        .interp : {
    1719                *(.interp);
    18         } :interp
    19        
    20         . = 0x70004000 + SIZEOF_HEADERS;
     20        } :interp :text
    2121#else
    2222        . = 0x4000 + SIZEOF_HEADERS;
    2323#endif
     24       
    2425        .init : {
    2526                *(.init);
  • uspace/srv/loader/interp.S

    rb553acc re1c0260  
    55#
    66
    7 #ifdef UARCH_arm32
    8 #define AT_NOTE %note
    9 #else
    10 #define AT_NOTE @note
     7#if ((defined(UARCH_abs32le)) && (defined(COMPILER_gcc_cross)) \
     8    && (defined(CROSS_TARGET_arm32)))
     9        #define ATSIGN(arg)  % ## arg
    1110#endif
    1211
    13 .section .interp, "a", AT_NOTE
     12#ifdef UARCH_arm32
     13        #define ATSIGN(arg)  % ## arg
     14#endif
     15
     16#ifndef ATSIGN
     17        #define ATSIGN(arg)  @ ## arg
     18#endif
     19
     20.section .interp, "a", ATSIGN(progbits)
    1421        .string "kernel"
Note: See TracChangeset for help on using the changeset viewer.