Skip to content
Snippets Groups Projects
  1. Dec 17, 2022
  2. Jul 27, 2022
  3. Nov 30, 2021
  4. Mar 02, 2021
  5. Feb 23, 2021
  6. Jan 14, 2021
    • 8tab's avatar
      Use BufWriter (instead of LineWriter) for FILEs other than stdout and stderr · 02f202ff
      8tab authored
      BufWriter has more capacity (8k vs 1k) and doesn't flush the stream after '\n'.
      That change helps to reduce the number of syscalls, especially when dealing with text files.
      
      Since BufWriter has a different way of getting number of pending elements than LineWriter -
      Pending trait was introduced to deal with that.
      02f202ff
  7. Jan 05, 2021
  8. Jan 03, 2021
    • 8tab's avatar
      Fix stdio/scanf test case · 021a8e00
      8tab authored
      inner_scanf prematurely exited before parsing collected string
      021a8e00
    • 8tab's avatar
      Fix global symbols relocations · a7480ea6
      8tab authored
      Instead of a single source of symbols, now linker keeps a list of DSO (former Library) objects
      with their own symbols map. That helps to process R_X86_64_COPY relocations correctly.
      For example, if 'a.out' executable with dependencies ['libstdc++.so', 'libc.so'] is being loaded
      and 'a.out' uses 'stdout' symbol from 'libc.so', its relocation process goes as follows:
      - linker processes relocation entry 'stdout' of type R_X86_64_GLOB_DAT from 'libc.so',
      - it goes through object list ['a.out', 'libstdc++.so', 'libc.so'] to find first object
        that exports 'stdout' symbol. The symbol is in 'a.out' with the value e.g. '0x404070',
      - linker sets 'stdout' symbol GOT entry in 'libc.so' to '0x404070',
      ....
      - linker processes relocation entry 'stdout' of type R_X86_64_COPY from 'a.out',
      - it goes through object list excluding 'a.out': ['libstdc++.so', 'libc.so']. The symbol is found in 'libc.so',
      - linker copies the 'stdout' symbol content from 'libc.so' to memory at address '0x404070' (in 'a.out' object).
      
      Objects are relocated in reverse order they were loaded. So in the example above, linker starts with relocating
      'libc.so' and ends with 'a.out'. It is necessary e.g. when linking with 'libstdc++.so' - there are many
      relocations which symbols are found in 'libstdc++.so', so they need to be resolved before their contents are
      copied to 'a.out'. That also matches GNU ld.so behavior.
      a7480ea6
  9. Dec 24, 2020
  10. Dec 23, 2020
  11. Oct 01, 2020
    • 8tab's avatar
      Fix tls tests for dynamic linker · eee9a80b
      8tab authored
      * load TLS segment for executable - while we can skip PT_LOAD for executable,
        we still have to load TLS segment.
      * set TCB address based on if elf is position independent
      eee9a80b
  12. Sep 30, 2020
  13. Sep 29, 2020
  14. Sep 17, 2020
  15. Sep 08, 2020
  16. Aug 27, 2020
  17. Aug 20, 2020
  18. Aug 05, 2020
  19. Aug 02, 2020
  20. Jul 30, 2020
  21. Jul 08, 2020
  22. Jun 29, 2020
    • jD91mZM2's avatar
      Fix broken CVec · 29ad5b75
      jD91mZM2 authored
      Oops, forgot to initiate the pointer after uses of CVec::new()
      29ad5b75
  23. Jun 23, 2020
  24. Jun 22, 2020
  25. Jun 07, 2020
  26. Jun 03, 2020
  27. May 25, 2020
  28. May 24, 2020
  29. May 23, 2020
  30. May 08, 2020
Loading