• Kai Germaschewski's avatar
    kbuild: Fix __start_SECTION, __stop_SECTION · aae7d999
    Kai Germaschewski authored
    In a discussion with Sam Ravnborg, the following problem became apparent:
    Most vmlinux.lds.S (but the ARM ones) used the following construct:
      
           __start___ksymtab = .;                                          
           __ksymtab         : AT(ADDR(__ksymtab) - LOAD_OFFSET) {         
                   *(__ksymtab)                                            
           }                                                               
           __stop___ksymtab = .;                                           
      
    However, the link will align the beginning of the section __ksymtab
    according to the requirements for the input sections. If '.' (current
    location counter) wasn't sufficiently aligned before, it's possible
    that __ksymtab actually starts at an address after the one
    __start___ksymtab points to, which will confuse the users of
    __start___ksymtab badly. The fix is to follow what the ARM Makefiles
    did for this case, ie
      
           __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) {                 
                   __start___ksymtab = .;                                  
                   *(__ksymtab)                                            
                   __stop___ksymtab = .;                                   
           }                                                               
    aae7d999
vmlinux.lds.h 924 Bytes