diff options
| author | axis <qt-info@nokia.com> | 2010-06-24 12:07:49 (GMT) | 
|---|---|---|
| committer | axis <qt-info@nokia.com> | 2010-06-24 12:38:53 (GMT) | 
| commit | 5b5ae51b22b57897dd61b9f8910e510757fa59c5 (patch) | |
| tree | 5e9a4c8255060e26be926271777c636e36dec3a0 /doc/src/snippets/scriptdebugger.cpp | |
| parent | b53909cb5f7436c4ad10aecf37767ffd52fa9e92 (diff) | |
| download | Qt-5b5ae51b22b57897dd61b9f8910e510757fa59c5.zip Qt-5b5ae51b22b57897dd61b9f8910e510757fa59c5.tar.gz Qt-5b5ae51b22b57897dd61b9f8910e510757fa59c5.tar.bz2 | |
Fixed several problems with the postlinker for Symbian (elf2e32).
The fixes were too complicated for a profile and so a perl script was
introduced. These are the issues that were addressed:
- Made sure that we link correctly in all cases where there is a
  mismatch between the DEF file and the ELF file. Specifically, these
  two cases:
    - If elf2e32 detects a symbols in the ELF file that is marked as
      absent in the DEF file, an ordinal mapping will not be
      generated in the dso file. This means that binaries linking to
      the library will not find the symbol, even though it exists in
      the code. Since this is completely useless behavior, this was
      fixed to include the symbol regardless.
    - If the DEF file contains a symbol that is not present in the
      ELF file, an ordinal mapping will be created in the dso file
      regardless, which means applications can link to a symbol that
      does not exist. This is even worse than point one, since it is
      not detected until runtime, when the dynamic link will fail.
      Fixed by leaving the symbol out of the dso file if it does not
      exist in the ELF file.
  Both fixes require rerunning elf2e32 to fix the symbol mappings
  that were broken in the first run, but it only happens if at least
  one symbol is broken in the way described above. Also, freezing the
  DEF files will "save" the symbols, so that it does not occur after
  that.
  Note that this does not remove the ability to get the postlinker to
  tell you about mismatches. By doing
  "QMAKE_ELF2E32_FLAGS -= --unfrozen", the symbol mismatches will be
  considered errors instead of warnings, and they can be caught that
  way.
- Code that was previously in the profile was moved to the perl
  script:
    - Detecting that there are errors in the postlink and return
      nonzero. elf2e32 does not do this on its own (at least not when
      using Wine).
    - Only overwriting the old dso file if the new one is different.
      This saves build time, since binaries that depend on the
      library do not trigger relink if the dso has not changed.
  These two points simplify the code, and they will also help the
  porting to Windows, since the old shell script tricks would not
  have worked there.
RevBy:    Trust me
Diffstat (limited to 'doc/src/snippets/scriptdebugger.cpp')
0 files changed, 0 insertions, 0 deletions
