1. 02 Mar, 2022 1 commit
  2. 18 Feb, 2022 1 commit
  3. 16 Feb, 2022 1 commit
  4. 08 Feb, 2022 1 commit
  5. 19 Jan, 2022 2 commits
  6. 16 Dec, 2021 1 commit
  7. 10 Dec, 2021 1 commit
  8. 18 Nov, 2021 2 commits
  9. 17 Nov, 2021 1 commit
  10. 16 Nov, 2021 1 commit
  11. 10 Nov, 2021 1 commit
  12. 09 Nov, 2021 1 commit
  13. 05 Nov, 2021 1 commit
    • Martin Storsjö's avatar
      winebuild: Fix relay entry points in Thumb mode with binutils/ELF and LLVM/PE. · 9e9509f3
      Martin Storsjö authored
      b1fe783a fixed relay entry points
      in Thumb mode when assembled with Clang/LLVM in ELF mode, but broke
      them when assembled with binutils as (and PE mode with LLVM didn't
      work either before or after).
      
      When/where the thumb bit is applied on symbols varies a lot between
      assemblers; this is a notoriously vague and undocumented area.
      
      After a .thumb_func directive, binutils as considers the next
      non-local symbol as a thumb symbol, to have the thumb bit set.
      LLVM's built-in assembler considers the next symbol, local or not,
      to be a thumb symbol. (Just noting for reference for possible
      solutions, this particular difference didn't play a role so far.)
      
      Secondly, in a symbol difference expression like this:
      
          .long symbol1 - symbol2
      
      Binutils as ignores the potential thumb state for both symbols and
      just calculates the raw distance. LLVM does include the thumb bit
      in symbol1 but ignores it in symbol2.
      
      Finally, for PE targets, the linker sets the thumb bit on all
      absolute addresses pointing to the text section, regardless of any
      .thumb_func directives at assembly time. (I.e., the
      __wine_spec_relay_entry_points entry in .L__wine_spec_relay_descr
      gets the bit set even if it wasn't marked as .thumb_func.)
      
      Therefore, mark __wine_spec_relay_entry_points as .thumb_func, as
      the absolute address to it will end up with the thumb bit set in
      PE builds in any case.
      
      Don't mark the individual relay entry pointers as thumb functions
      (the code still is generated as thumb as there hasn't been any
      mode switch back to arm mode); this makes the differences calculated
      correctly (both LLVM and binutils ignore the thumb state of the
      subtracted label).
      
      If desired, one could change __wine_spec_relay_entry_point_%d into
      local labels with a .L prefix, just as before
      b1fe783a again, it doesn't make
      any difference in this form.
      Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
      9e9509f3
  14. 21 Oct, 2021 2 commits
  15. 07 Oct, 2021 1 commit
  16. 05 Oct, 2021 1 commit
  17. 04 Oct, 2021 2 commits
  18. 29 Sep, 2021 2 commits
  19. 28 Sep, 2021 2 commits
  20. 23 Sep, 2021 2 commits
  21. 30 Aug, 2021 3 commits
  22. 26 Aug, 2021 3 commits
  23. 25 Aug, 2021 1 commit
  24. 17 Aug, 2021 1 commit
  25. 03 Aug, 2021 1 commit
  26. 02 Aug, 2021 1 commit
  27. 06 Jul, 2021 2 commits
  28. 21 Jun, 2021 1 commit