1. 13 9月, 2018 1 次提交
    • R
      apply hidden visibility to sigreturn code fragments · b6e59cd9
      Rich Felker 提交于
      these were overlooked in the declarations overhaul work because they
      are not properly declared, and the current framework even allows their
      declared types to vary by arch. at some point this should be cleaned
      up, but I'm not sure what the right way would be.
      b6e59cd9
  2. 13 11月, 2016 1 次提交
    • R
      work around gdb issues recognizing sigreturn trampoline on x86_64 · 54991729
      Rich Felker 提交于
      gdb can only backtrace/unwind across signal handlers if it recognizes
      the sa_restorer trampoline. for x86_64, gdb first attempts to
      determine the symbol name for the function in which the program
      counter resides and match it against "__restore_rt". if no name can be
      found (e.g. in the case of a stripped binary), the exact instruction
      sequence is matched instead.
      
      when matching the function name, however, gdb's unwind code wrongly
      considers the interval [sym,sym+size] rather than [sym,sym+size).
      thus, if __restore_rt begins immediately after another function, gdb
      wrongly identifies pc as lying within the previous adjacent function.
      this patch adds a nop before __restore_rt to preclude that
      possibility. it also removes the symbol name __restore and replaces it
      with a macro since the stability of whether gdb identifies the
      function as __restore_rt or __restore is not clear.
      
      for the no-symbols case, the instruction sequence is changed to use
      %rax rather than %eax to match what gdb expects.
      
      based on patch by Szabolcs Nagy, with extended description and
      corresponding x32 changes added.
      54991729
  3. 24 9月, 2015 1 次提交
    • R
      fix signal return for sh/fdpic · b61df229
      Rich Felker 提交于
      the restorer function pointer provided in the kernel sigaction
      structure is interpreted by the kernel as a raw code address, not a
      function descriptor.
      
      this commit moves the declarations of the __restore and __restore_rt
      symbols to ksigaction.h so that arch versions of the file can override
      them, and introduces a version for sh which declares them as objects
      rather than functions.
      
      an alternate solution would have been defining SA_RESTORER to 0 so
      that the functions are not used, but this both requires executable
      stack (since the sh kernel does not have a vdso page with permanent
      restorer functions) and crashes on qemu user-level emulation.
      b61df229