• Stephan Bergmann's avatar
    external/firebird: Better workaround for Clang alignment expectations · 25764ffd
    Stephan Bergmann yazdı
    8ea07101 "external/firebird: Work around
    operator new alignment violations" had misused DEBUG_GDS_ALLOC to work around
    the problem that recent Clang on Linux x86-64 assumes some storage allocated via
    Firebird's global operator new replacement to be 16-byte aligned, while Firebird
    only provides 8-byte alignment.
    
    This problem now also appears on macOS x86-64, at least with Apple's Clang
    version "Apple LLVM version 9.1.0 (clang-902.0.39.1)" from Xcode 9.3 (as well as
    with recent plain Clang trunk, towards Clang 7), when building --enable-
    optimized.  However, while the DEBUG_GDS_ALLOC hack would still cause
    ICU_convert_init (workdir/UnpackedTarball/firebird/temp/Release/intl/cv_icu.o)
    to not use movaps on erroneously assumed to be 16-byte aligned memory, it would
    cause strange failures on macOS (pos being out of bounds in traRpbList::PopRpb,
    workdir/UnpackedTarball/firebird/src/jrd/rpb_chain.cpp, in the invocation of
    isql during the build of external/firebird) that I haven't tracked down further.
    
    As it happens, the recently added 14955ed9
    "external/firebird: Support Clang ASan" provides a different workaround for the
    underlying problem that appears to work well on both Linux and macOS x86-64,
    reusing USE_ASAN also in these cases to shut down most of Firebird's own memory
    management.
    
    I assume that affected Clang are plain Clang >= 4 (as I'd mentioned in my
    <https://sourceforge.net/p/firebird/mailman/message/35671804/> "Re: [Firebird-
    devel] alloc.h global operator new replacement violating alignment
    requirements") and Apple Clang >= 9 (for which __apple_build_version__ is
    defined).
    
    Because DEBUG_GDS_ALLOC is no longer passed in from the outside, its setting in
    external/firebird/asan.patch can be simplified (cf. commit message of
    14955ed9).
    
    (The given scenario in ICU_convert_init involves an allocation of 24 bytes,
    where Clang may or may not be allowed to assume 16-byte alignment, see
    <http://lists.llvm.org/pipermail/cfe-dev/2018-April/057669.html> "Re: [cfe-dev]
    operator new alignment assumptions".  However, as reported at
    <https://sourceforge.net/p/firebird/mailman/message/35671750/> "Re: [Firebird-
    devel] alloc.h global operator new replacement violating alignment
    requirements", Firebird only supports 8-byte alignment, which would definitely
    be wrong in a similar scenario where the requested allocation was a multiple of
    16 bytes.)
    
    Change-Id: I48884f9d008eaeaea369850e24f05b8806f9b676
    Reviewed-on: https://gerrit.libreoffice.org/52956Tested-by: 's avatarJenkins <ci@libreoffice.org>
    Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
    25764ffd
Adı
Son kayıt (commit)
Son güncelleme
..
apache-commons Loading commit data...
apr Loading commit data...
beanshell Loading commit data...
bluez_bluetooth Loading commit data...
boost Loading commit data...
breakpad Loading commit data...
bzip2 Loading commit data...
cairo Loading commit data...
clew Loading commit data...
clucene Loading commit data...
coinmp Loading commit data...
cppunit Loading commit data...
ct2n Loading commit data...
curl Loading commit data...
epm Loading commit data...
epoxy Loading commit data...
expat Loading commit data...
firebird Loading commit data...
fontconfig Loading commit data...
freetype Loading commit data...
glm Loading commit data...
gpgmepp Loading commit data...
graphite Loading commit data...
harfbuzz Loading commit data...
hsqldb Loading commit data...
hunspell Loading commit data...
hyphen Loading commit data...
icu Loading commit data...
jfreereport Loading commit data...
languagetool Loading commit data...
lcms2 Loading commit data...
libabw Loading commit data...
libassuan Loading commit data...
libatomic_ops Loading commit data...
libcdr Loading commit data...
libcmis Loading commit data...
libebook Loading commit data...
libeot Loading commit data...
libepubgen Loading commit data...
libetonyek Loading commit data...
libexttextcat Loading commit data...
libfreehand Loading commit data...
libgpg-error Loading commit data...
libjpeg-turbo Loading commit data...
liblangtag Loading commit data...
libmspub Loading commit data...
libmwaw Loading commit data...
libodfgen Loading commit data...
liborcus Loading commit data...
libpagemaker Loading commit data...
libpng Loading commit data...
libqxp Loading commit data...
librevenge Loading commit data...
libstaroffice Loading commit data...
libtommath Loading commit data...
libvisio Loading commit data...
libwpd Loading commit data...
libwpg Loading commit data...
libwps Loading commit data...
libxml2 Loading commit data...
libxslt Loading commit data...
libzmf Loading commit data...
lpsolve Loading commit data...
lxml Loading commit data...
mariadb-connector-c Loading commit data...
mdds Loading commit data...
mdnsresponder Loading commit data...
misc_extensions Loading commit data...
more_fonts Loading commit data...
msc-externals Loading commit data...
mysql-connector-cpp Loading commit data...
mythes Loading commit data...
neon Loading commit data...
nss Loading commit data...
openldap Loading commit data...
openssl Loading commit data...
owncloud-android-lib Loading commit data...
pdfium Loading commit data...
poppler Loading commit data...
postgresql Loading commit data...
python3 Loading commit data...
redland Loading commit data...
rhino Loading commit data...
sane Loading commit data...
serf Loading commit data...
twain_dsm Loading commit data...
ucpp Loading commit data...
unixODBC Loading commit data...
xmlsec Loading commit data...
xsltml Loading commit data...
zlib Loading commit data...
Makefile Loading commit data...
Module_external.mk Loading commit data...
README Loading commit data...