All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android-3.18 118/129] kernel/trace/Kconfig:319: syntax error
@ 2020-06-04  9:13 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-06-04  9:13 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 20471 bytes --]

tree:   https://android.googlesource.com/kernel/common android-3.18
head:   42844fdbef553cb4996566a9760455df7d1aed66
commit: 42cf3eb3efcefe6f087dde702464a402c7aa7560 [118/129] kbuild: compute false-positive -Wmaybe-uninitialized cases in Kconfig
config: i386-tinyconfig
compiler: gcc-5 (Ubuntu 5.5.0-12ubuntu1) 5.5.0 20171010
reproduce (this is a W=1 build):
        git checkout 42cf3eb3efcefe6f087dde702464a402c7aa7560
        make W=1 ARCH=i386  tinyconfig
        make W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

Note: the android-common/android-3.18 HEAD 42844fdbef553cb4996566a9760455df7d1aed66 builds fine.
      It only hurts bisectibility.

All errors (new ones prefixed by >>, old ones prefixed by <<):

init/Kconfig:21: syntax error
init/Kconfig:20: invalid option
init/Kconfig:28: syntax error
init/Kconfig:27: invalid option
init/Kconfig:1386: syntax error
init/Kconfig:1385: unknown option "imply"
>> kernel/trace/Kconfig:319: syntax error
kernel/trace/Kconfig:318: unknown option "imply"
make[2]: *** [scripts/kconfig/Makefile:33: oldconfig] Error 1
make[1]: *** [Makefile:540: oldconfig] Error 2
make: *** [Makefile:145: sub-make] Error 2
--
init/Kconfig:21: syntax error
init/Kconfig:20: invalid option
init/Kconfig:28: syntax error
init/Kconfig:27: invalid option
init/Kconfig:1386: syntax error
init/Kconfig:1385: unknown option "imply"
>> kernel/trace/Kconfig:319: syntax error
kernel/trace/Kconfig:318: unknown option "imply"
make[2]: *** [scripts/kconfig/Makefile:85: olddefconfig] Error 1
make[1]: *** [Makefile:540: olddefconfig] Error 2
make: *** [Makefile:145: sub-make] Error 2
--
init/Kconfig:21: syntax error
init/Kconfig:20: invalid option
init/Kconfig:28: syntax error
init/Kconfig:27: invalid option
init/Kconfig:1386: syntax error
init/Kconfig:1385: unknown option "imply"
>> kernel/trace/Kconfig:319: syntax error
kernel/trace/Kconfig:318: unknown option "imply"
make[2]: *** [scripts/kconfig/Makefile:80: allnoconfig] Error 1
make[2]: Target 'tinyconfig' not remade because of errors.
make[1]: *** [Makefile:540: tinyconfig] Error 2
make: *** [Makefile:145: sub-make] Error 2

vim +319 kernel/trace/Kconfig

17d80fd07d35ae Peter Zijlstra           2008-10-21  137  
606576ce816603 Steven Rostedt           2008-10-06  138  config FUNCTION_TRACER
1b29b01887e603 Steven Rostedt           2008-05-12  139  	bool "Kernel Function Tracer"
606576ce816603 Steven Rostedt           2008-10-06  140  	depends on HAVE_FUNCTION_TRACER
4d7a077c0c7bfd Steven Rostedt           2009-02-18  141  	select KALLSYMS
5e0a0939108768 Steven Rostedt           2009-05-28  142  	select GENERIC_TRACER
35e8e302e5d6e3 Steven Rostedt           2008-05-12  143  	select CONTEXT_SWITCH_TRACER
1b29b01887e603 Steven Rostedt           2008-05-12  144  	help
1b29b01887e603 Steven Rostedt           2008-05-12  145  	  Enable the kernel to trace every kernel function. This is done
1b29b01887e603 Steven Rostedt           2008-05-12  146  	  by using a compiler feature to insert a small, 5-byte No-Operation
40892367bc893f Randy Dunlap             2009-12-21  147  	  instruction at the beginning of every kernel function, which NOP
1b29b01887e603 Steven Rostedt           2008-05-12  148  	  sequence is then dynamically patched into a tracer call when
1b29b01887e603 Steven Rostedt           2008-05-12  149  	  tracing is enabled by the administrator. If it's runtime disabled
1b29b01887e603 Steven Rostedt           2008-05-12  150  	  (the bootup default), then the overhead of the instructions is very
1b29b01887e603 Steven Rostedt           2008-05-12  151  	  small and not measurable even in micro-benchmarks.
35e8e302e5d6e3 Steven Rostedt           2008-05-12  152  
fb52607afcd062 Frederic Weisbecker      2008-11-25  153  config FUNCTION_GRAPH_TRACER
fb52607afcd062 Frederic Weisbecker      2008-11-25  154  	bool "Kernel Function Graph Tracer"
fb52607afcd062 Frederic Weisbecker      2008-11-25  155  	depends on HAVE_FUNCTION_GRAPH_TRACER
15e6cb3673ea62 Frederic Weisbecker      2008-11-11  156  	depends on FUNCTION_TRACER
eb4a03780d4c44 Steven Rostedt           2009-06-18  157  	depends on !X86_32 || !CC_OPTIMIZE_FOR_SIZE
764f3b95131a7c Ingo Molnar              2008-12-03  158  	default y
15e6cb3673ea62 Frederic Weisbecker      2008-11-11  159  	help
fb52607afcd062 Frederic Weisbecker      2008-11-25  160  	  Enable the kernel to trace a function at both its return
fb52607afcd062 Frederic Weisbecker      2008-11-25  161  	  and its entry.
692105b8ac5bcd Matt LaPlante            2009-01-26  162  	  Its first purpose is to trace the duration of functions and
692105b8ac5bcd Matt LaPlante            2009-01-26  163  	  draw a call graph for each thread with some information like
692105b8ac5bcd Matt LaPlante            2009-01-26  164  	  the return value. This is done by setting the current return
692105b8ac5bcd Matt LaPlante            2009-01-26  165  	  address on the current task structure into a stack of calls.
15e6cb3673ea62 Frederic Weisbecker      2008-11-11  166  
bac429f037f1a5 Steven Rostedt           2009-03-20  167  
81d68a96a39844 Steven Rostedt           2008-05-12  168  config IRQSOFF_TRACER
81d68a96a39844 Steven Rostedt           2008-05-12  169  	bool "Interrupts-off Latency Tracer"
81d68a96a39844 Steven Rostedt           2008-05-12  170  	default n
81d68a96a39844 Steven Rostedt           2008-05-12  171  	depends on TRACE_IRQFLAGS_SUPPORT
592913ecb87a9e John Stultz              2010-07-13  172  	depends on !ARCH_USES_GETTIMEOFFSET
81d68a96a39844 Steven Rostedt           2008-05-12  173  	select TRACE_IRQFLAGS
5e0a0939108768 Steven Rostedt           2009-05-28  174  	select GENERIC_TRACER
81d68a96a39844 Steven Rostedt           2008-05-12  175  	select TRACER_MAX_TRACE
85bac32c4a52c5 Steven Rostedt           2009-09-04  176  	select RING_BUFFER_ALLOW_SWAP
22cffc2bb4a50d Steven Rostedt (Red Hat  2013-03-05  177) 	select TRACER_SNAPSHOT
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  178) 	select TRACER_SNAPSHOT_PER_CPU_SWAP
81d68a96a39844 Steven Rostedt           2008-05-12  179  	help
81d68a96a39844 Steven Rostedt           2008-05-12  180  	  This option measures the time spent in irqs-off critical
81d68a96a39844 Steven Rostedt           2008-05-12  181  	  sections, with microsecond accuracy.
81d68a96a39844 Steven Rostedt           2008-05-12  182  
81d68a96a39844 Steven Rostedt           2008-05-12  183  	  The default measurement method is a maximum search, which is
81d68a96a39844 Steven Rostedt           2008-05-12  184  	  disabled by default and can be runtime (re-)started
81d68a96a39844 Steven Rostedt           2008-05-12  185  	  via:
81d68a96a39844 Steven Rostedt           2008-05-12  186  
156f5a7801195f GeunSik Lim              2009-06-02  187  	      echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
81d68a96a39844 Steven Rostedt           2008-05-12  188  
40892367bc893f Randy Dunlap             2009-12-21  189  	  (Note that kernel size and overhead increase with this option
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  190  	  enabled. This option and the preempt-off timing option can be
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  191  	  used together or separately.)
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  192  
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  193  config PREEMPT_TRACER
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  194  	bool "Preemption-off Latency Tracer"
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  195  	default n
592913ecb87a9e John Stultz              2010-07-13  196  	depends on !ARCH_USES_GETTIMEOFFSET
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  197  	depends on PREEMPT
5e0a0939108768 Steven Rostedt           2009-05-28  198  	select GENERIC_TRACER
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  199  	select TRACER_MAX_TRACE
85bac32c4a52c5 Steven Rostedt           2009-09-04  200  	select RING_BUFFER_ALLOW_SWAP
22cffc2bb4a50d Steven Rostedt (Red Hat  2013-03-05  201) 	select TRACER_SNAPSHOT
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  202) 	select TRACER_SNAPSHOT_PER_CPU_SWAP
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  203  	help
40892367bc893f Randy Dunlap             2009-12-21  204  	  This option measures the time spent in preemption-off critical
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  205  	  sections, with microsecond accuracy.
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  206  
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  207  	  The default measurement method is a maximum search, which is
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  208  	  disabled by default and can be runtime (re-)started
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  209  	  via:
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  210  
156f5a7801195f GeunSik Lim              2009-06-02  211  	      echo 0 > /sys/kernel/debug/tracing/tracing_max_latency
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  212  
40892367bc893f Randy Dunlap             2009-12-21  213  	  (Note that kernel size and overhead increase with this option
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  214  	  enabled. This option and the irqs-off timing option can be
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  215  	  used together or separately.)
6cd8a4bb2f9752 Steven Rostedt           2008-05-12  216  
352ad25aa4a189 Steven Rostedt           2008-05-12  217  config SCHED_TRACER
352ad25aa4a189 Steven Rostedt           2008-05-12  218  	bool "Scheduling Latency Tracer"
5e0a0939108768 Steven Rostedt           2009-05-28  219  	select GENERIC_TRACER
352ad25aa4a189 Steven Rostedt           2008-05-12  220  	select CONTEXT_SWITCH_TRACER
352ad25aa4a189 Steven Rostedt           2008-05-12  221  	select TRACER_MAX_TRACE
22cffc2bb4a50d Steven Rostedt (Red Hat  2013-03-05  222) 	select TRACER_SNAPSHOT
352ad25aa4a189 Steven Rostedt           2008-05-12  223  	help
352ad25aa4a189 Steven Rostedt           2008-05-12  224  	  This tracer tracks the latency of the highest priority task
352ad25aa4a189 Steven Rostedt           2008-05-12  225  	  to be scheduled in, starting from the point it has woken up.
352ad25aa4a189 Steven Rostedt           2008-05-12  226  
897f17a65389a2 Steven Rostedt           2009-05-28  227  config ENABLE_DEFAULT_TRACERS
897f17a65389a2 Steven Rostedt           2009-05-28  228  	bool "Trace process context switches and events"
5e0a0939108768 Steven Rostedt           2009-05-28  229  	depends on !GENERIC_TRACER
b77e38aa240c3b Steven Rostedt           2009-02-24  230  	select TRACING
b77e38aa240c3b Steven Rostedt           2009-02-24  231  	help
40892367bc893f Randy Dunlap             2009-12-21  232  	  This tracer hooks to various trace points in the kernel,
b77e38aa240c3b Steven Rostedt           2009-02-24  233  	  allowing the user to pick and choose which trace point they
897f17a65389a2 Steven Rostedt           2009-05-28  234  	  want to trace. It also includes the sched_switch tracer plugin.
a7abe97fd8e7a6 Steven Rostedt           2009-04-20  235  
ee08c6eccb7d12 Frederic Weisbecker      2009-03-07  236  config FTRACE_SYSCALLS
ee08c6eccb7d12 Frederic Weisbecker      2009-03-07  237  	bool "Trace syscalls"
667000011927b4 Josh Stone               2009-08-24  238  	depends on HAVE_SYSCALL_TRACEPOINTS
5e0a0939108768 Steven Rostedt           2009-05-28  239  	select GENERIC_TRACER
0ea1c4156bf9e2 Frederic Weisbecker      2009-03-15  240  	select KALLSYMS
ee08c6eccb7d12 Frederic Weisbecker      2009-03-07  241  	help
ee08c6eccb7d12 Frederic Weisbecker      2009-03-07  242  	  Basic tracer to catch the syscall entry and exit events.
ee08c6eccb7d12 Frederic Weisbecker      2009-03-07  243  
debdd57f5145f3 Hiraku Toyooka           2012-12-26  244  config TRACER_SNAPSHOT
debdd57f5145f3 Hiraku Toyooka           2012-12-26  245  	bool "Create a snapshot trace buffer"
debdd57f5145f3 Hiraku Toyooka           2012-12-26  246  	select TRACER_MAX_TRACE
debdd57f5145f3 Hiraku Toyooka           2012-12-26  247  	help
debdd57f5145f3 Hiraku Toyooka           2012-12-26  248  	  Allow tracing users to take snapshot of the current buffer using the
debdd57f5145f3 Hiraku Toyooka           2012-12-26  249  	  ftrace interface, e.g.:
debdd57f5145f3 Hiraku Toyooka           2012-12-26  250  
debdd57f5145f3 Hiraku Toyooka           2012-12-26  251  	      echo 1 > /sys/kernel/debug/tracing/snapshot
debdd57f5145f3 Hiraku Toyooka           2012-12-26  252  	      cat snapshot
debdd57f5145f3 Hiraku Toyooka           2012-12-26  253  
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  254) config TRACER_SNAPSHOT_PER_CPU_SWAP
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  255)         bool "Allow snapshot to swap per CPU"
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  256) 	depends on TRACER_SNAPSHOT
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  257) 	select RING_BUFFER_ALLOW_SWAP
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  258) 	help
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  259) 	  Allow doing a snapshot of a single CPU buffer instead of a
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  260) 	  full swap (all buffers). If this is set, then the following is
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  261) 	  allowed:
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  262) 
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  263) 	      echo 1 > /sys/kernel/debug/tracing/per_cpu/cpu2/snapshot
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  264) 
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  265) 	  After which, only the tracing buffer for CPU 2 was swapped with
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  266) 	  the main tracing buffer, and the other CPU buffers remain the same.
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  267) 
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  268) 	  When this is enabled, this adds a little more overhead to the
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  269) 	  trace recording, as it needs to add some checks to synchronize
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  270) 	  recording with swaps. But this does not affect the performance
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  271) 	  of the overall system. This is enabled by default when the preempt
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  272) 	  or irq latency tracers are enabled, as those need to swap as well
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  273) 	  and already adds the overhead (plus a lot more).
0b85ffc2930443 Steven Rostedt (Red Hat  2013-03-05  274) 
2ed84eeb8808cf Steven Rostedt           2008-11-12  275  config TRACE_BRANCH_PROFILING
9ae5b8790037d0 Steven Rostedt           2009-04-20  276  	bool
5e0a0939108768 Steven Rostedt           2009-05-28  277  	select GENERIC_TRACER
9ae5b8790037d0 Steven Rostedt           2009-04-20  278  
9ae5b8790037d0 Steven Rostedt           2009-04-20  279  choice
9ae5b8790037d0 Steven Rostedt           2009-04-20  280  	prompt "Branch Profiling"
9ae5b8790037d0 Steven Rostedt           2009-04-20  281  	default BRANCH_PROFILE_NONE
9ae5b8790037d0 Steven Rostedt           2009-04-20  282  	help
9ae5b8790037d0 Steven Rostedt           2009-04-20  283  	 The branch profiling is a software profiler. It will add hooks
9ae5b8790037d0 Steven Rostedt           2009-04-20  284  	 into the C conditionals to test which path a branch takes.
9ae5b8790037d0 Steven Rostedt           2009-04-20  285  
9ae5b8790037d0 Steven Rostedt           2009-04-20  286  	 The likely/unlikely profiler only looks at the conditions that
9ae5b8790037d0 Steven Rostedt           2009-04-20  287  	 are annotated with a likely or unlikely macro.
9ae5b8790037d0 Steven Rostedt           2009-04-20  288  
40892367bc893f Randy Dunlap             2009-12-21  289  	 The "all branch" profiler will profile every if-statement in the
9ae5b8790037d0 Steven Rostedt           2009-04-20  290  	 kernel. This profiler will also enable the likely/unlikely
40892367bc893f Randy Dunlap             2009-12-21  291  	 profiler.
9ae5b8790037d0 Steven Rostedt           2009-04-20  292  
40892367bc893f Randy Dunlap             2009-12-21  293  	 Either of the above profilers adds a bit of overhead to the system.
40892367bc893f Randy Dunlap             2009-12-21  294  	 If unsure, choose "No branch profiling".
9ae5b8790037d0 Steven Rostedt           2009-04-20  295  
9ae5b8790037d0 Steven Rostedt           2009-04-20  296  config BRANCH_PROFILE_NONE
9ae5b8790037d0 Steven Rostedt           2009-04-20  297  	bool "No branch profiling"
9ae5b8790037d0 Steven Rostedt           2009-04-20  298  	help
9ae5b8790037d0 Steven Rostedt           2009-04-20  299  	  No branch profiling. Branch profiling adds a bit of overhead.
9ae5b8790037d0 Steven Rostedt           2009-04-20  300  	  Only enable it if you want to analyse the branching behavior.
9ae5b8790037d0 Steven Rostedt           2009-04-20  301  	  Otherwise keep it disabled.
9ae5b8790037d0 Steven Rostedt           2009-04-20  302  
9ae5b8790037d0 Steven Rostedt           2009-04-20  303  config PROFILE_ANNOTATED_BRANCHES
9ae5b8790037d0 Steven Rostedt           2009-04-20  304  	bool "Trace likely/unlikely profiler"
9ae5b8790037d0 Steven Rostedt           2009-04-20  305  	select TRACE_BRANCH_PROFILING
1f0d69a9fc815d Steven Rostedt           2008-11-12  306  	help
59bf896406471a Masanari Iida            2012-04-18  307  	  This tracer profiles all likely and unlikely macros
1f0d69a9fc815d Steven Rostedt           2008-11-12  308  	  in the kernel. It will display the results in:
1f0d69a9fc815d Steven Rostedt           2008-11-12  309  
13e5befaddcf8d David Rientjes           2011-03-16  310  	  /sys/kernel/debug/tracing/trace_stat/branch_annotated
1f0d69a9fc815d Steven Rostedt           2008-11-12  311  
40892367bc893f Randy Dunlap             2009-12-21  312  	  Note: this will add a significant overhead; only turn this
1f0d69a9fc815d Steven Rostedt           2008-11-12  313  	  on if you need to profile the system's use of these macros.
1f0d69a9fc815d Steven Rostedt           2008-11-12  314  
2bcd521a684cc9 Steven Rostedt           2008-11-21  315  config PROFILE_ALL_BRANCHES
2bcd521a684cc9 Steven Rostedt           2008-11-21  316  	bool "Profile all if conditionals"
9ae5b8790037d0 Steven Rostedt           2009-04-20  317  	select TRACE_BRANCH_PROFILING
42cf3eb3efcefe Masahiro Yamada          2019-02-21  318  	imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
2bcd521a684cc9 Steven Rostedt           2008-11-21 @319  	help
2bcd521a684cc9 Steven Rostedt           2008-11-21  320  	  This tracer profiles all branch conditions. Every if ()
2bcd521a684cc9 Steven Rostedt           2008-11-21  321  	  taken in the kernel is recorded whether it hit or miss.
2bcd521a684cc9 Steven Rostedt           2008-11-21  322  	  The results will be displayed in:
2bcd521a684cc9 Steven Rostedt           2008-11-21  323  
13e5befaddcf8d David Rientjes           2011-03-16  324  	  /sys/kernel/debug/tracing/trace_stat/branch_all
2bcd521a684cc9 Steven Rostedt           2008-11-21  325  
9ae5b8790037d0 Steven Rostedt           2009-04-20  326  	  This option also enables the likely/unlikely profiler.
9ae5b8790037d0 Steven Rostedt           2009-04-20  327  
2bcd521a684cc9 Steven Rostedt           2008-11-21  328  	  This configuration, when enabled, will impose a great overhead
2bcd521a684cc9 Steven Rostedt           2008-11-21  329  	  on the system. This should only be enabled when the system
40892367bc893f Randy Dunlap             2009-12-21  330  	  is to be analyzed in much detail.
9ae5b8790037d0 Steven Rostedt           2009-04-20  331  endchoice
2bcd521a684cc9 Steven Rostedt           2008-11-21  332  

:::::: The code at line 319 was first introduced by commit
:::::: 2bcd521a684cc94befbe2ce7d5b613c841b0d304 trace: profile all if conditionals

:::::: TO: Steven Rostedt <srostedt@redhat.com>
:::::: CC: Ingo Molnar <mingo@elte.hu>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-06-04  9:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-04  9:13 [android-common:android-3.18 118/129] kernel/trace/Kconfig:319: syntax error kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.