Skip to content
Snippets Groups Projects
  1. Feb 28, 2021
  2. Feb 27, 2021
  3. Feb 23, 2021
  4. Feb 18, 2021
  5. Feb 14, 2021
  6. Jan 20, 2021
  7. Jan 18, 2021
  8. Jan 14, 2021
  9. Jan 11, 2021
  10. Jan 10, 2021
  11. Jan 05, 2021
  12. 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
  13. Dec 24, 2020
  14. Dec 23, 2020
  15. Oct 18, 2020
  16. Oct 06, 2020
Loading