test_parser_testsuite in ubuntu_qrt_apparmor failed to build on J/xilinx

Bug #2103671 reported by Po-Hsu Lin
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ubuntu-kernel-tests
In Progress
Undecided
Po-Hsu Lin

Bug Description

Issue found on j/xilinx 5.15.0-1043.47 since sru-20250113

This issue can only be found with j/xilinx. j/linux ARM64 does not have this issue.

Wei-Lin found some discussion on the Internet:
https://lists.freebsd.org/archives/freebsd-arm/2023-April/002487.html
https://github.com/llvm/llvm-project/issues/63483

This rings a bell that we should probably check the version of g++, and investigation shows we are using 11.4.0-1ubuntu1~22.04 on j/linux but 11.3.0-1ubuntu1~22.04 was used on j/xilinx.

Test output:
 Running test: './test-apparmor.py' distro: 'Ubuntu 22.04' kernel: '5.15.0-1043.47 (Ubuntu 5.15.0-1043.47-xilinx-zynqmp 5.15.173)' arch: 'arm64' init: 'systemd' uid: 0/0 SUDO_USER: 'ubuntu')
 test_parser_testsuite (__main__.ApparmorTestsuites)
 Skipping private tests

 Run parser regression tests ... (Applying patch 0001-tests-regression-apparmor-syscall.sh-fail-iopl-ioper.patch) (Applying patch 0001-tests-regression-apparmor-capabilities.sh-fail-iopl-.patch) (Applying patch tests-fix-variable-type-for-getopt.patch) (Applying patch tests-parse-result-of-multiple-lines-in-output.patch) (Applying patch utils-fix-aa-notify-last-login-test-3.0.patch) FAIL

 ======================================================================
 FAIL: test_parser_testsuite (__main__.ApparmorTestsuites)
 Run parser regression tests
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/ubuntu/autotest/client/tmp/ubuntu_qrt_apparmor/src/qa-regression-testing/scripts/./test-apparmor.py", line 2366, in test_parser_testsuite
     self.assertEqual(expected, rc, result + report)
 AssertionError: 0 != 2 : Got exit code 2, expected 0
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_common.o parser_common.c
   preparing apparmor_3.0.4-2ubuntu2.4.dsc... done
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_include.o parser_include.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_interface.o parser_interface.c
 bison -d --define=parse.error=verbose -o parser_yacc.c parser_yacc.y
 flex -B -v --noyy_top_state -oparser_lex.c parser_lex.l
 flex version 2.6.4 usage statistics:
   scanner options: -svB8 -Cem -oparser_lex.c
   1230/2000 NFA states
   522/1000 DFA states (5511 words)
   84 rules
   Compressed tables always back-up
   23/40 start conditions
   647 epsilon states, 474 double epsilon states
   133/200 character classes needed 4635/4750 words of storage, 0 reused
   22106 state/nextstate pairs created
   2372/19734 unique/duplicate transitions
   633/1000 base-def entries created
   4027/6000 (peak 8154) nxt-chk entries created
   2220/7500 (peak 6216) template nxt-chk entries created
   373 empty table entries
   126 protos created
   111 templates created, 277 uses
   56/256 equivalence classes created
   20/256 meta-equivalence classes created
   0 (72 saved) hash collisions, 1897 DFAs equal
   22 sets of reallocations needed
   9632 total table entries needed
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_lex.o parser_lex.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_main.o parser_main.c
 ../common/list_capabilities.sh | LC_ALL=C sed -n -e "s/[ \\t]\\?CAP_\\([A-Z0-9_]\\+\\)/\{\"\\L\\1\", \\UCAP_\\1, NO_BACKMAP_CAP, CAPFLAG_BASE_FEATURE\},\\n/pg" > generated_cap_names.h
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_misc.o parser_misc.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_merge.o parser_merge.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_symtab.o parser_symtab.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_yacc.o parser_yacc.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_regex.o parser_regex.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_variable.o parser_variable.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_policy.o parser_policy.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o parser_alias.o parser_alias.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o common_optarg.o common_optarg.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o lib.o lib.c
 ../common/list_af_names.sh > generated_af_names.h
 cat base_af_names.h | diff -u - generated_af_names.h | grep -v '^.AF_MAX' | grep '^\+[^+]' ; \
 if [ $? -eq 1 ] ; then \
     cat base_af_names.h | LC_ALL=C sed -n -e 's/[ \t]\?AF_MAX[ \t]\+[0-9]\+,//g' -e 's/[ \t]\+\?AF_\([A-Z0-9_]\+\)[ \t]\+\([0-9]\+\),/#ifndef AF_\1\n# define AF_\1 \2\n#endif\nAA_GEN_NET_ENT("\L\1", \UAF_\1)\n/pg' > af_names.h ; \
     cat base_af_names.h | LC_ALL=C sed -n -e 's/AF_MAX[ \t]\+\([0-9]\+\),\?.*/\n#define AA_AF_MAX \1\n/p' >> af_names.h ; \
 else \
     echo "Error: new AF names detected; please update base_af_names.h with values from generated_af_names.h" ; \
     exit 1 ; \
 fi
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o network.o network.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o mount.o mount.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o dbus.o dbus.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o profile.o profile.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o rule.o rule.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o signal.o signal.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o ptrace.o ptrace.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o af_rule.o af_rule.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o af_unix.o af_unix.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o policy_cache.o policy_cache.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o default_features.o default_features.c
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -c -o mqueue.o mqueue.cc
 make -C libapparmor_re CFLAGS="-g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x"
 make[1]: Entering directory '/tmp/testlibi8w_hg38/source/jammy/apparmor-3.0.4/parser/libapparmor_re'
 bison -o parse.cc parse.y
 parse.y:63.1-21: warning: deprecated directive: ‘%name-prefix "regex_"’, use ‘%define api.prefix {regex_}’ [-Wdeprecated]
    63 | %name-prefix "regex_"
       | ^~~~~~~~~~~~~~~~~~~~~
       | %define api.prefix {regex_}
 parse.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -c -o parse.o parse.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -c -o expr-tree.o expr-tree.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -c -o hfa.o hfa.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -c -o chfa.o chfa.cc
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -c -o aare_rules.o aare_rules.cc
 ar -rcs libapparmor_re.a parse.o expr-tree.o hfa.o chfa.o aare_rules.o
 make[1]: Leaving directory '/tmp/testlibi8w_hg38/source/jammy/apparmor-3.0.4/parser/libapparmor_re'
 g++ -g -O2 -pipe -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -o apparmor_parser parser_common.o parser_include.o parser_interface.o parser_lex.o parser_main.o parser_misc.o parser_merge.o parser_symtab.o parser_yacc.o parser_regex.o parser_variable.o parser_policy.o parser_alias.o common_optarg.o lib.o network.o mount.o dbus.o profile.o rule.o signal.o ptrace.o af_rule.o af_unix.o policy_cache.o default_features.o mqueue.o \
         libapparmor_re/libapparmor_re.a -static-libgcc -static-libstdc++ -L. -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread
 /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/11/../../../aarch64-linux-gnu/libapparmor.a(private.o): in function `atomic_inc':
 (.text+0x4d0): undefined reference to `__aarch64_ldadd4_sync'
 /usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/11/../../../aarch64-linux-gnu/libapparmor.a(private.o): in function `atomic_dec_and_test':
 (.text+0x4f0): undefined reference to `__aarch64_ldadd4_sync'
 collect2: error: ld returned 1 exit status
 make: *** [Makefile:215: apparmor_parser] Error 1

Po-Hsu Lin (cypressyew)
Changed in ubuntu-kernel-tests:
assignee: nobody → Po-Hsu Lin (cypressyew)
status: New → In Progress
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.