Changing the source slightly to use a constant that fits in 1 byte, leads to correct code. (In the function not in the macro, see below diff, so the code is only different in one place).
A movs instruction is generated for 200, whereas for 400 it is a mov.w and then a nop at the end of the function for padding. This may affect other offset calculations but I could not determine why and which one contributes to the fault. diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc index 6f6b7a4..17e6f13 100644 --- a/apt-pkg/contrib/error.cc +++ b/apt-pkg/contrib/error.cc @@ -84,7 +84,7 @@ GEMessage(DebugE, DEBUG) bool GlobalError::InsertErrno(MsgType const &type, const char *Function, const char *Description,...) { va_list args; - size_t msgSize = 400; + size_t msgSize = 200; int const errsv = errno; while (true) { va_start(args,Description); -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/774175 Title: apt segfaults on armel in oneiric -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs