Backed out changeset 390c5748d868 (bug 1892198) for causing Bug 1892493. CLOSED TREE

This commit is contained in:
Cristian Tuns 2024-04-19 15:46:42 -04:00
Родитель b9af4e8715
Коммит f1d454ad58
3 изменённых файлов: 36 добавлений и 18 удалений

Просмотреть файл

@ -14,25 +14,32 @@ dnl ========================================================
AC_CACHE_CHECK(what kind of list files are supported by the linker,
moz_cv_expand_libs_list_style,
[echo "int main() {return 0;}" > conftest.${ac_ext}
if AC_TRY_COMMAND(${CC-cc} -o conftest.${OBJ_SUFFIX} -c $CFLAGS $CPPFLAGS conftest.${ac_ext} 1>&5) && test -s conftest.${OBJ_SUFFIX}; then
dnl Because BFD ld doesn't work with LTO + linker scripts, we
dnl must pass the LTO CFLAGS to the compile command, and the LTO
dnl LDFLAGS to all subsequent link commands.
dnl https://sourceware.org/bugzilla/show_bug.cgi?id=23600
if AC_TRY_COMMAND(${CC-cc} -o conftest.${OBJ_SUFFIX} -c $MOZ_LTO_CFLAGS $CFLAGS $CPPFLAGS conftest.${ac_ext} 1>&5) && test -s conftest.${OBJ_SUFFIX}; then
echo "INPUT(conftest.${OBJ_SUFFIX})" > conftest.list
if test "$CC_TYPE" = "clang-cl"; then
link="$LINKER -OUT:conftest${ac_exeext}"
else
link="${CC-cc} -o conftest${ac_exeext}"
fi
echo "conftest.${OBJ_SUFFIX}" > conftest.list
if AC_TRY_COMMAND($link $LDFLAGS [-Wl,@conftest.list] $LIBS 1>&5) && test -s conftest${ac_exeext}; then
moz_cv_expand_libs_list_style=linkerlist
dnl -filelist is for the OS X linker. We need to try -filelist first
dnl because clang understands @file, but may pass an oversized argument
dnl list to the linker depending on the contents of @file.
elif AC_TRY_COMMAND($link $LDFLAGS [-Wl,-filelist,conftest.list] $LIBS 1>&5) && test -s conftest${ac_exeext}; then
moz_cv_expand_libs_list_style=filelist
elif AC_TRY_COMMAND($link $LDFLAGS [@conftest.list] $LIBS 1>&5) && test -s conftest${ac_exeext}; then
moz_cv_expand_libs_list_style=list
if AC_TRY_COMMAND($link $MOZ_LTO_LDFLAGS $LDFLAGS conftest.list $LIBS 1>&5) && test -s conftest${ac_exeext}; then
moz_cv_expand_libs_list_style=linkerscript
else
AC_ERROR([Couldn't find one that works])
echo "conftest.${OBJ_SUFFIX}" > conftest.list
dnl -filelist is for the OS X linker. We need to try -filelist
dnl first because clang understands @file, but may pass an
dnl oversized argument list to the linker depending on the
dnl contents of @file.
if AC_TRY_COMMAND($link $MOZ_LTO_LDFLAGS $LDFLAGS [-Wl,-filelist,conftest.list] $LIBS 1>&5) && test -s conftest${ac_exeext}; then
moz_cv_expand_libs_list_style=filelist
elif AC_TRY_COMMAND($link $MOZ_LTO_LDFLAGS $LDFLAGS @conftest.list $LIBS 1>&5) && test -s conftest${ac_exeext}; then
moz_cv_expand_libs_list_style=list
else
AC_ERROR([Couldn't find one that works])
fi
fi
else
dnl We really don't expect to get here, but just in case

Просмотреть файл

@ -325,13 +325,15 @@ class CommonBackend(BuildBackend):
list_style = "list"
list_file_path = mozpath.join(objdir, name)
objs = [os.path.relpath(o, objdir) for o in objs]
content = "\n".join(objs)
if list_style == "filelist":
if list_style == "linkerscript":
ref = list_file_path
content = "\n".join('INPUT("%s")' % o for o in objs)
elif list_style == "filelist":
ref = "-Wl,-filelist," + list_file_path
elif list_style == "linkerlist":
ref = "-Wl,@" + list_file_path
content = "\n".join(objs)
elif list_style == "list":
ref = "@" + list_file_path
content = "\n".join(objs)
else:
return None

Просмотреть файл

@ -18,7 +18,16 @@ from mozbuild.preprocessor import Preprocessor
def main(output, input_file):
with open(input_file) as fh:
objs = [l.strip() for l in fh.readlines()]
if buildconfig.substs["EXPAND_LIBS_LIST_STYLE"] == "linkerscript":
def cleanup(line):
assert line.startswith('INPUT("')
assert line.endswith('")')
return line[len('INPUT("') : -len('")')]
objs = [cleanup(l.strip()) for l in fh.readlines()]
else:
objs = [l.strip() for l in fh.readlines()]
pp = Preprocessor()
pp.out = StringIO()