Skip to content
  • Shinya Kuribayashi's avatar
    [MIPS] Fix $gp usage · 22069215
    Shinya Kuribayashi authored
    
    
    Now we load $gp with _GLOBAL_OFFSET_TABLE_, but this is incorrect use.
    As a general principle, we should use _gp for $gp.
    
    Thanks to linker script's help we fortunately have _gp which equals to
    _GLOBAL_OFFSET_TABLE_. But once _gp gets out of alignment, we will not
    be able to access to GOT entires, global variables and procedure entry
    points. The right thing to do is to use _gp.
    
    This patch also introduce a new symbol `.gpword _GLOBAL_OFFSET_TABLE_'
    which holds the offset from _gp. When updating GOT entries, we use this
    offset and _gp to calculate the final _GLOBAL_OFFSET_TABLE_.
    
    This patch is originally submitted by Vlad Lungu <vlad@comsys.ro>, then
    I made some change to leave over num_got_entries.
    
    Signed-off-by: default avatarShinya Kuribayashi <shinya.kuribayashi@necel.com>
    Cc: Vlad Lungu <vlad@comsys.ro>
    22069215