Re: Symbian: unalighned relocations for pointers-to-members

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 16/12/2021 00:39, Фёдар Стрыжнёў (Fiodar Stryzhniou) via Gcc-help wrote:
Hello. I maintain ScummVM port for Symbian Series 60v3. ScummVM is a complete rewrite of hundreds old games' executables and is not an emulator. It's free and opensource.

Last year, when I prepared a version 2.2.0 in the release, it was faced with the fact that when the Ultima engine is turned on in the executable file (supports Ultima 1, 4, 6, 8), it does not start. Ultima 4 & 6 support disabling allowed SCUMMVM. In the spring of this year, after some changes in the source code Ultima, the elf2e32 utility has begun to complete the work with the error "Line 427". To clarify the causes of the error, a rebeling of the code responsible for the support of Ultima 4 & 6 was carried out.
The rebel passed as follows:
1. Removed ultima.lib (Static Library)
2. Left the entry point, deleted all other files associated with Ultima 4/6 from the project assembly
3. Collected ultima.lib, then collected scummvm.exe
4. Added files to the project and continued to collect until the error did not jump out.

I have done these steps first for Ultima 4, then - 6. In both cases, the reason was pointer-to-member array declaration.
Ultima 4 - https://github.com/scummvm/scummvm/blob/master/engines/ultima/ultima4/game/item.cpp#L49
Ultima 6 - https://github.com/scummvm/scummvm/blob/master/engines/ultima/nuvie/usecode/u6_object_types.h#L28

elf2e32 creates E32 aka EPOC32 aka Symbian exe and dlls from elf.

Analysis of the elf2e32 source code indicated the reason - when checking the created file, unaligned relocations were found. After modifying the source code, the elf2e32 was printed unaligned relocations. I redirect to file "readelf -a <name of elf>". I find several random Elf32_Rel r_offset from elf2e32 in readelf output. GCC 5.4.0 and 11.2.0 give same result.

Compiler options taken from Eclipse output and they are same for every source file: arm-none-symbianelf-gcc    -O2 -fno-unit-at-a-time  -fexceptions -Wall -Wno-unknown-pragmas   -march=armv5t      -mapcs-frame -mthumb-interwork -pipe -nostdinc -c  -Wno-multichar -Wno-unused -Wno-format -fsigned-char -fno-asynchronous-unwind-tables -std=c++11 -v -pipe -Wno-multichar -Wno-reorder -Wno-unused -Wno-format -fsigned-char -Wno-psabi -marm  -msoft-float  -D__MARM_INTERWORK__   -DNDEBUG -D_UNICODE -D__GCCE__  -D__SYMBIAN32__ -D__S60_50__ -D__S60_3X__ -D__SERIES60_3X__ -D__GCCE__ -D__EPOC32__ -D__MARM__ -D__EABI__ -D__MARM_ARMV5__ -D__EXE__ -DENABLE_CGE -DENABLE_ULTIMA -DENABLE_ULTIMA6 -DS60 -DS60V3 -DSDL_BACKEND -DENABLE_VKEYBD -DUSE_TRANSLATION -DNONSTANDARD_PORT -DDISABLE_FANCY_THEMES -DUSE_A52 -DUSE_BINK -DUSE_FAAD -DUSE_FLAC -DUSE_FREETYPE2 -DUSE_JPEG -DUSE_MAD -DUSE_MPEG2 -DUSE_PNG -DUSE_THEORADEC
  -DUSE_TREMOR -DUSE_ZLIB -D__SUPPORT_CPP_EXCEPTIONS__ -D__MARM_ARMV5__  -D__PRODUCT_INCLUDE__=\"/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant/Symbian_OS.hrh\"    -x c++ -Wno-ctor-dtor-privacy -fpermissive -std=c++14 -include /Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/INCLUDE/GCCE/GCCE.h  -I /Symbian/Projects/SDL/scummvm/base -I /Symbian/Projects/SDL/scummvm/engines  -I /Symbian/Projects/SDL/scummvm  -I /Symbian/Projects/SDL/scummvm/gui  -I /Symbian/Projects/SDL/scummvm/audio  -I /Symbian/Projects/SDL/scummvm/backends/platform/symbian/src -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/freetype -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/mpeg2dec -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/jpeg
  -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/png -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/ESDL -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/ZLIB -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/libc -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/theora -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/tremor -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/site -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include -I /Symbian/Projects/SDL/scummvm/backends/platform/symbian/src -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant -I "d:/mingw/msys/1.0/local/gcc-11.2.0/lib/gcc/arm-none-symbianelf/11.2.0/include" -o /Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/BUILD/Symbian/Projects/SDL/scummvm/backends/platform/symbian/S60v3/NEVERHOODE/GCCE/UREL/version.o /Symbian/Projects/SDL/scummvm/base/version.cpp
Using built-in specs.
COLLECT_GCC=arm-none-symbianelf-gcc
Target: arm-none-symbianelf
Configured with: ../gcc-11.2.0/./configure --target=arm-none-symbianelf --prefix=/usr/local/gcc-11.2.0 --without-headers --enable-languages=c,c++,lto --enable-poison-system-directories --enable-lto --with-newlib --enable-long-long --with-libiconv-prefix=/usr/local --with-dwarf2 --enable-interwork --enable-tls --enable-multilib --disable-hosted-libstdcxx --disable-libstdcxx-pch --disable-option-checking --disable-threads --disable-nls --disable-win32-registry --disable-libssp --disable-shared --enable-wchar_t --enable-extra-sgxxlite-multilibs --enable-c99 --with-static-standard-libraries
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 11.2.0 (GCC)
COLLECT_GCC_OPTIONS='-O2' '-fno-unit-at-a-time' '-fexceptions' '-Wall' '-Wno-unknown-pragmas'  '-mapcs-frame' '-mthumb-interwork' '-pipe' '-nostdinc' '-c' '-Wformat=0' '-fno-asynchronous-unwind-tables' '-std=c++11' '-v' '-pipe' '-Wno-multichar' '-Wno-reorder' '-Wno-unused' '-Wformat=0' '-fsigned-char' '-Wno-psabi' '-marm' '-mfloat-abi=soft' '-D' '__MARM_INTERWORK__' '-D' 'NDEBUG' '-D' '_UNICODE' '-D' '__GCCE__' '-D' '__SYMBIAN32__' '-D' '__S60_50__' '-D' '__S60_3X__' '-D' '__SERIES60_3X__' '-D' '__GCCE__' '-D' '__EPOC32__' '-D' '__MARM__' '-D' '__EABI__' '-D' '__MARM_ARMV5__' '-D' '__EXE__' '-D' 'ENABLE_CGE' '-D' 'ENABLE_ULTIMA' '-D' 'ENABLE_ULTIMA6' '-D' 'S60' '-D' 'S60V3' '-D' 'SDL_BACKEND' '-D' 'ENABLE_VKEYBD' '-D' 'USE_TRANSLATION' '-D' 'NONSTANDARD_PORT' '-D' 'DISABLE_FANCY_THEMES' '-D' 'USE_A52' '-D' 'USE_BINK' '-D' 'USE_FAAD' '-D' 'USE_FLAC' '-D' 'USE_FREETYPE2' '-D' 'USE_JPEG' '-D' 'USE_MAD' '-D' 'USE_MPEG2' '-D' 'USE_PNG' '-D' 'USE_THEORADEC'
  '-D' 'USE_TREMOR' '-D' 'USE_ZLIB' '-D' '__SUPPORT_CPP_EXCEPTIONS__' '-D' '__MARM_ARMV5__' '-D' '__PRODUCT_INCLUDE__="/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant/Symbian_OS.hrh"' '-Wno-ctor-dtor-privacy' '-fpermissive' '-std=c++14' '-include' '/Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/INCLUDE/GCCE/gcce.h' '-I' '/Symbian/Projects/SDL/scummvm/base' '-I' '/Symbian/Projects/SDL/scummvm/engines' '-I' '/Symbian/Projects/SDL/scummvm' '-I' '/Symbian/Projects/SDL/scummvm/gui' '-I' '/Symbian/Projects/SDL/scummvm/audio' '-I' '/Symbian/Projects/SDL/scummvm/backends/platform/symbian/src' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/freetype' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/mpeg2dec' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/jpeg' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/png' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/esdl'
  '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/zlib' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/libc' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/theora' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/tremor' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/site' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include' '-I' '/Symbian/Projects/SDL/scummvm/backends/platform/symbian/src' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant' '-I' 'd:/mingw/msys/1.0/local/gcc-11.2.0/lib/gcc/arm-none-symbianelf/11.2.0/include' '-o' '/Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/BUILD/Symbian/Projects/SDL/scummvm/backends/platform/symbian/S60v3/NEVERHOODE/GCCE/UREL/version.o' '-mlibarch=armv5t' '-march=armv5t' '-dumpdir' '/Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/BUILD/Symbian/Projects/SDL/scummvm/backends/platform/symbian/S60v3/NEVERHOODE/GCCE/UREL/'
  d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../libexec/gcc/arm-none-symbianelf/11.2.0/cc1plus.exe -quiet -nostdinc -v -I /Symbian/Projects/SDL/scummvm/base -I /Symbian/Projects/SDL/scummvm/engines -I /Symbian/Projects/SDL/scummvm -I /Symbian/Projects/SDL/scummvm/gui -I /Symbian/Projects/SDL/scummvm/audio -I /Symbian/Projects/SDL/scummvm/backends/platform/symbian/src -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/freetype -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/mpeg2dec -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/jpeg -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/png -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/esdl -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/zlib -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/libc -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/theora -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/tremor -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/site
  -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include -I /Symbian/Projects/SDL/scummvm/backends/platform/symbian/src -I /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant -I d:/mingw/msys/1.0/local/gcc-11.2.0/lib/gcc/arm-none-symbianelf/11.2.0/include -iprefix d:\mingw\msys\1.0\local\gcc-11.2.0\bin\../lib/gcc/arm-none-symbianelf/11.2.0/ -D__USES_INITFINI__ -D __MARM_INTERWORK__ -D NDEBUG -D _UNICODE -D __GCCE__ -D __SYMBIAN32__ -D __S60_50__ -D __S60_3X__ -D __SERIES60_3X__ -D __GCCE__ -D __EPOC32__ -D __MARM__ -D __EABI__ -D __MARM_ARMV5__ -D __EXE__ -D ENABLE_CGE -D ENABLE_ULTIMA -D ENABLE_ULTIMA6 -D S60 -D S60V3 -D SDL_BACKEND -D ENABLE_VKEYBD -D USE_TRANSLATION -D NONSTANDARD_PORT -D DISABLE_FANCY_THEMES -D USE_A52 -D USE_BINK -D USE_FAAD -D USE_FLAC -D USE_FREETYPE2 -D USE_JPEG -D USE_MAD -D USE_MPEG2 -D USE_PNG -D USE_THEORADEC -D USE_TREMOR
  -D USE_ZLIB -D __SUPPORT_CPP_EXCEPTIONS__ -D __MARM_ARMV5__ -D __PRODUCT_INCLUDE__="/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant/Symbian_OS.hrh" -include /Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/INCLUDE/GCCE/gcce.h /Symbian/Projects/SDL/scummvm/base/version.cpp -fno-builtin -fvisibility=hidden -fno-short-enums -fshort-wchar -quiet -dumpdir /Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/BUILD/Symbian/Projects/SDL/scummvm/backends/platform/symbian/S60v3/NEVERHOODE/GCCE/UREL/ -dumpbase version.cpp -dumpbase-ext .cpp -mapcs-frame -mthumb-interwork -marm -mfloat-abi=soft -mlibarch=armv5t -march=armv5t -O2 -Wall -Wno-unknown-pragmas -Wformat=0 -Wno-multichar -Wno-reorder -Wno-unused -Wformat=0 -Wno-psabi -Wno-ctor-dtor-privacy -std=c++11 -std=c++14 -version -fno-unit-at-a-time -fexceptions -fno-asynchronous-unwind-tables -fsigned-char -fpermissive -fno-builtin -fvisibility=hidden -fno-short-enums -fshort-wchar -o - |
  d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../lib/gcc/arm-none-symbianelf/11.2.0/../../../../arm-none-symbianelf/bin/as.exe -march=armv5t -mapcs-frame -mfpu=vfp -mthumb-interwork -mfloat-abi=soft -meabi=5 -o /Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/BUILD/Symbian/Projects/SDL/scummvm/backends/platform/symbian/S60v3/NEVERHOODE/GCCE/UREL/version.o
GNU C++14 (GCC) version 11.2.0 (arm-none-symbianelf)
	compiled by GNU C version 6.3.0, GMP version 6.1.0, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "/Symbian/Projects/SDL/scummvm/backends/platform/symbian/src"
#include "..." search starts here:
#include <...> search starts here:
  /Symbian/Projects/SDL/scummvm/base
  /Symbian/Projects/SDL/scummvm/engines
  /Symbian/Projects/SDL/scummvm
  /Symbian/Projects/SDL/scummvm/gui
  /Symbian/Projects/SDL/scummvm/audio
  /Symbian/Projects/SDL/scummvm/backends/platform/symbian/src
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/freetype
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/mpeg2dec
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/jpeg
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/png
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/esdl
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/zlib
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/libc
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/theora
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/tremor
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/site
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include
  /Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant
  d:/mingw/msys/1.0/local/gcc-11.2.0/lib/gcc/arm-none-symbianelf/11.2.0/include
End of search list.
GNU C++14 (GCC) version 11.2.0 (arm-none-symbianelf)
	compiled by GNU C version 6.3.0, GMP version 6.1.0, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 7bd26c26f5e3795062462f9efc696d4f
COMPILER_PATH=d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../libexec/gcc/arm-none-symbianelf/11.2.0/;d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../libexec/gcc/;d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../lib/gcc/arm-none-symbianelf/11.2.0/../../../../arm-none-symbianelf/bin/
LIBRARY_PATH=d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../lib/gcc/arm-none-symbianelf/11.2.0/;d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../lib/gcc/;d:/mingw/msys/1.0/local/gcc-11.2.0/bin/../lib/gcc/arm-none-symbianelf/11.2.0/../../../../arm-none-symbianelf/lib/
COLLECT_GCC_OPTIONS='-O2' '-fno-unit-at-a-time' '-fexceptions' '-Wall' '-Wno-unknown-pragmas'  '-mapcs-frame' '-mthumb-interwork' '-pipe' '-nostdinc' '-c' '-Wformat=0' '-fno-asynchronous-unwind-tables' '-std=c++11' '-v' '-pipe' '-Wno-multichar' '-Wno-reorder' '-Wno-unused' '-Wformat=0' '-fsigned-char' '-Wno-psabi' '-marm' '-mfloat-abi=soft' '-D' '__MARM_INTERWORK__' '-D' 'NDEBUG' '-D' '_UNICODE' '-D' '__GCCE__' '-D' '__SYMBIAN32__' '-D' '__S60_50__' '-D' '__S60_3X__' '-D' '__SERIES60_3X__' '-D' '__GCCE__' '-D' '__EPOC32__' '-D' '__MARM__' '-D' '__EABI__' '-D' '__MARM_ARMV5__' '-D' '__EXE__' '-D' 'ENABLE_CGE' '-D' 'ENABLE_ULTIMA' '-D' 'ENABLE_ULTIMA6' '-D' 'S60' '-D' 'S60V3' '-D' 'SDL_BACKEND' '-D' 'ENABLE_VKEYBD' '-D' 'USE_TRANSLATION' '-D' 'NONSTANDARD_PORT' '-D' 'DISABLE_FANCY_THEMES' '-D' 'USE_A52' '-D' 'USE_BINK' '-D' 'USE_FAAD' '-D' 'USE_FLAC' '-D' 'USE_FREETYPE2' '-D' 'USE_JPEG' '-D' 'USE_MAD' '-D' 'USE_MPEG2' '-D' 'USE_PNG'
  '-D' 'USE_THEORADEC' '-D' 'USE_TREMOR' '-D' 'USE_ZLIB' '-D' '__SUPPORT_CPP_EXCEPTIONS__' '-D' '__MARM_ARMV5__' '-D' '__PRODUCT_INCLUDE__="/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant/Symbian_OS.hrh"' '-Wno-ctor-dtor-privacy' '-fpermissive' '-std=c++14' '-include' '/Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/INCLUDE/GCCE/gcce.h' '-I' '/Symbian/Projects/SDL/scummvm/base' '-I' '/Symbian/Projects/SDL/scummvm/engines' '-I' '/Symbian/Projects/SDL/scummvm' '-I' '/Symbian/Projects/SDL/scummvm/gui' '-I' '/Symbian/Projects/SDL/scummvm/audio' '-I' '/Symbian/Projects/SDL/scummvm/backends/platform/symbian/src' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/freetype' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/mpeg2dec' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/jpeg' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/png'
  '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/esdl' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/zlib' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/libc' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/theora' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/tremor' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/site' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include' '-I' '/Symbian/Projects/SDL/scummvm/backends/platform/symbian/src' '-I' '/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include/variant' '-I' 'd:/mingw/msys/1.0/local/gcc-11.2.0/lib/gcc/arm-none-symbianelf/11.2.0/include' '-o' '/Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/BUILD/Symbian/Projects/SDL/scummvm/backends/platform/symbian/S60v3/NEVERHOODE/GCCE/UREL/version.o' '-mlibarch=armv5t' '-march=armv5t' '-dumpdir' '/Symbian/S60_5th_Edition_SDK_v1.0/EPOC32/BUILD/Symbian/Projects/SDL/scummvm/backends/platform/symbian/S60v3/NEVERHOODE/GCCE/UREL/version.'


I can't tell from this what the issue might be. To stand any chance of proceeding further, I think we're going to need a simple, self-contained, testcase that can demonstrate the problem.

I don't think I've seen a question about SymbianOS support in over 5 years, now, possibly longer. Given that SymbianOS itself was discontinued back around 2013 (8 years ago now), the GCC port has declined to the point where I suspect it's likely to get deprecated soon, due to lack of maintenance.

R.



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux