All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
@ 2016-03-24  3:19 Andre McCurdy
  2016-03-24  4:19 ` Khem Raj
  0 siblings, 1 reply; 11+ messages in thread
From: Andre McCurdy @ 2016-03-24  3:19 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
---
 meta/recipes-devtools/gcc/gcc-configure-common.inc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc
index f4f76bd..a7b8d63 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
@@ -65,6 +65,7 @@ EXTRA_OECONF_append_mips64eln32 = " --with-abi=64 --with-arch-64=mips64 --with-t
 EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
 EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
 EXTRA_OECONF_append_armv7ve = " --with-arch=armv7-a"
+EXTRA_OECONF_append_armv8a = " --with-arch=armv7-a"
 
 EXTRA_OECONF_GCC_FLOAT ??= ""
 CPPFLAGS = ""
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24  3:19 [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a Andre McCurdy
@ 2016-03-24  4:19 ` Khem Raj
  2016-03-24  5:16   ` Andre McCurdy
  0 siblings, 1 reply; 11+ messages in thread
From: Khem Raj @ 2016-03-24  4:19 UTC (permalink / raw)
  To: Andre McCurdy; +Cc: Patches and discussions about the oe-core layer

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

On Mar 23, 2016 8:19 PM, "Andre McCurdy" <armccurdy@gmail.com> wrote:
>
> Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
> ---
>  meta/recipes-devtools/gcc/gcc-configure-common.inc | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc
b/meta/recipes-devtools/gcc/gcc-configure-common.inc
> index f4f76bd..a7b8d63 100644
> --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
> +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
> @@ -65,6 +65,7 @@ EXTRA_OECONF_append_mips64eln32 = " --with-abi=64
--with-arch-64=mips64 --with-t
>  EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
>  EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
>  EXTRA_OECONF_append_armv7ve = " --with-arch=armv7-a"
> +EXTRA_OECONF_append_armv8a = " --with-arch=armv7-a"

Armv8 is different architecture and even gcc backends for armv8 arent
shared with armv7. This change doesn't look right to me. What are you
fixing with this change
>
>  EXTRA_OECONF_GCC_FLOAT ??= ""
>  CPPFLAGS = ""
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

[-- Attachment #2: Type: text/html, Size: 1821 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24  4:19 ` Khem Raj
@ 2016-03-24  5:16   ` Andre McCurdy
  2016-03-24  8:03     ` Khem Raj
  0 siblings, 1 reply; 11+ messages in thread
From: Andre McCurdy @ 2016-03-24  5:16 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer

On Wed, Mar 23, 2016 at 9:19 PM, Khem Raj <raj.khem@gmail.com> wrote:
>
> On Mar 23, 2016 8:19 PM, "Andre McCurdy" <armccurdy@gmail.com> wrote:
>>
>> Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
>> ---
>>  meta/recipes-devtools/gcc/gcc-configure-common.inc | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc
>> b/meta/recipes-devtools/gcc/gcc-configure-common.inc
>> index f4f76bd..a7b8d63 100644
>> --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
>> +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
>> @@ -65,6 +65,7 @@ EXTRA_OECONF_append_mips64eln32 = " --with-abi=64
>> --with-arch-64=mips64 --with-t
>>  EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
>>  EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
>>  EXTRA_OECONF_append_armv7ve = " --with-arch=armv7-a"
>> +EXTRA_OECONF_append_armv8a = " --with-arch=armv7-a"
>
> Armv8 is different architecture and even gcc backends for armv8 arent shared
> with armv7. This change doesn't look right to me. What are you fixing with
> this change

In the context of oe-core machine specific over-rides, "armv8a"
signifies that we're building 32bit code for an ARMv8-A class CPU.
See:

  http://git.openembedded.org/openembedded-core/commit/?h=master-next&id=823af99d825375485d64fcb82c00fb85004813b8

(Maybe it would have been better to use aarch32 as the over-ride in this case?).

>>
>>  EXTRA_OECONF_GCC_FLOAT ??= ""
>>  CPPFLAGS = ""
>> --
>> 1.9.1
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24  5:16   ` Andre McCurdy
@ 2016-03-24  8:03     ` Khem Raj
  2016-03-24 17:37       ` Andre McCurdy
  0 siblings, 1 reply; 11+ messages in thread
From: Khem Raj @ 2016-03-24  8:03 UTC (permalink / raw)
  To: Andre McCurdy, Daniel Dragomir, Richard Purdie
  Cc: Patches and discussions about the oe-core layer

On Wed, Mar 23, 2016 at 10:16 PM, Andre McCurdy <armccurdy@gmail.com> wrote:
> On Wed, Mar 23, 2016 at 9:19 PM, Khem Raj <raj.khem@gmail.com> wrote:
>>
>> On Mar 23, 2016 8:19 PM, "Andre McCurdy" <armccurdy@gmail.com> wrote:
>>>
>>> Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
>>> ---
>>>  meta/recipes-devtools/gcc/gcc-configure-common.inc | 1 +
>>>  1 file changed, 1 insertion(+)
>>>
>>> diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>> b/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>> index f4f76bd..a7b8d63 100644
>>> --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>> +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>> @@ -65,6 +65,7 @@ EXTRA_OECONF_append_mips64eln32 = " --with-abi=64
>>> --with-arch-64=mips64 --with-t
>>>  EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
>>>  EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
>>>  EXTRA_OECONF_append_armv7ve = " --with-arch=armv7-a"
>>> +EXTRA_OECONF_append_armv8a = " --with-arch=armv7-a"
>>
>> Armv8 is different architecture and even gcc backends for armv8 arent shared
>> with armv7. This change doesn't look right to me. What are you fixing with
>> this change
>
> In the context of oe-core machine specific over-rides, "armv8a"
> signifies that we're building 32bit code for an ARMv8-A class CPU.
> See:
>
>   http://git.openembedded.org/openembedded-core/commit/?h=master-next&id=823af99d825375485d64fcb82c00fb85004813b8
>
> (Maybe it would have been better to use aarch32 as the over-ride in this case?).

ah I did not know this patch has made it in. I had concerns about it.
Its quite confusing to call armv8a as 32bit since thats wrong
representation. It should be renamed to aarch32 atleast.
since thats the execution state of armv8a architecture thats what this
file is doing. armv8a support aarch64/aarch32/(thumb2 in aarch2 state)

Please submit a rename patch with adjustments before starting to use
it widely in metadata


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24  8:03     ` Khem Raj
@ 2016-03-24 17:37       ` Andre McCurdy
  2016-03-24 18:32         ` Phil Blundell
  0 siblings, 1 reply; 11+ messages in thread
From: Andre McCurdy @ 2016-03-24 17:37 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer

On Thu, Mar 24, 2016 at 1:03 AM, Khem Raj <raj.khem@gmail.com> wrote:
> On Wed, Mar 23, 2016 at 10:16 PM, Andre McCurdy <armccurdy@gmail.com> wrote:
>> On Wed, Mar 23, 2016 at 9:19 PM, Khem Raj <raj.khem@gmail.com> wrote:
>>>
>>> On Mar 23, 2016 8:19 PM, "Andre McCurdy" <armccurdy@gmail.com> wrote:
>>>>
>>>> Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
>>>> ---
>>>>  meta/recipes-devtools/gcc/gcc-configure-common.inc | 1 +
>>>>  1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>>> b/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>>> index f4f76bd..a7b8d63 100644
>>>> --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>>> +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
>>>> @@ -65,6 +65,7 @@ EXTRA_OECONF_append_mips64eln32 = " --with-abi=64
>>>> --with-arch-64=mips64 --with-t
>>>>  EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
>>>>  EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
>>>>  EXTRA_OECONF_append_armv7ve = " --with-arch=armv7-a"
>>>> +EXTRA_OECONF_append_armv8a = " --with-arch=armv7-a"
>>>
>>> Armv8 is different architecture and even gcc backends for armv8 arent shared
>>> with armv7. This change doesn't look right to me. What are you fixing with
>>> this change
>>
>> In the context of oe-core machine specific over-rides, "armv8a"
>> signifies that we're building 32bit code for an ARMv8-A class CPU.
>> See:
>>
>>   http://git.openembedded.org/openembedded-core/commit/?h=master-next&id=823af99d825375485d64fcb82c00fb85004813b8
>>
>> (Maybe it would have been better to use aarch32 as the over-ride in this case?).
>
> ah I did not know this patch has made it in. I had concerns about it.
> Its quite confusing to call armv8a as 32bit since thats wrong
> representation. It should be renamed to aarch32 atleast.
> since thats the execution state of armv8a architecture thats what this
> file is doing. armv8a support aarch64/aarch32/(thumb2 in aarch2 state)
>
> Please submit a rename patch with adjustments before starting to use
> it widely in metadata

Renaming armv8a -> aarch32 is going to affect almost every line in the
patch. We should probably drop the current patch from master-next.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24 17:37       ` Andre McCurdy
@ 2016-03-24 18:32         ` Phil Blundell
  2016-03-24 21:41           ` Richard Purdie
  2016-03-24 22:22           ` Khem Raj
  0 siblings, 2 replies; 11+ messages in thread
From: Phil Blundell @ 2016-03-24 18:32 UTC (permalink / raw)
  To: Andre McCurdy, Khem Raj; +Cc: Patches and discussions about the oe-core layer

On Thu, 2016-03-24 at 10:37 -0700, Andre McCurdy wrote:
> 
> Renaming armv8a -> aarch32 is going to affect almost every line in
> the patch. We should probably drop the current patch from master-
> next.

"AArch32" applies retrospectively to all older versions of the ARM
architecture as well, so it's not obvious to me that a straight rename
of the existing "armv8a" override to "aarch32" would be the right thing
either. 

I think the whole approach to ARMv8 and AArch64 in OE needs to be
carefully thought through before we start landing any patches for that
stuff.  We have a tangled enough maze of overrides right now and I
think we should make all efforts to avoid it getting worse.

p.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24 18:32         ` Phil Blundell
@ 2016-03-24 21:41           ` Richard Purdie
  2016-03-24 22:28             ` Khem Raj
  2016-03-24 22:22           ` Khem Raj
  1 sibling, 1 reply; 11+ messages in thread
From: Richard Purdie @ 2016-03-24 21:41 UTC (permalink / raw)
  To: Phil Blundell, Andre McCurdy, Khem Raj
  Cc: Patches and discussions about the oe-core layer

On Thu, 2016-03-24 at 18:32 +0000, Phil Blundell wrote:
> On Thu, 2016-03-24 at 10:37 -0700, Andre McCurdy wrote:
> > 
> > Renaming armv8a -> aarch32 is going to affect almost every line in
> > the patch. We should probably drop the current patch from master-
> > next.
> 
> "AArch32" applies retrospectively to all older versions of the ARM
> architecture as well, so it's not obvious to me that a straight
> rename
> of the existing "armv8a" override to "aarch32" would be the right
> thing
> either. 
> 
> I think the whole approach to ARMv8 and AArch64 in OE needs to be
> carefully thought through before we start landing any patches for
> that
> stuff.  We have a tangled enough maze of overrides right now and I
> think we should make all efforts to avoid it getting worse.

Agreed, I'm planning to drop the patch triggering this from -next and
defer it until 2.2. The discussions can happen in the meantime to get a
patchset we're all happy with.

Cheers,

Richard


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24 18:32         ` Phil Blundell
  2016-03-24 21:41           ` Richard Purdie
@ 2016-03-24 22:22           ` Khem Raj
  2016-03-24 23:21             ` Phil Blundell
  1 sibling, 1 reply; 11+ messages in thread
From: Khem Raj @ 2016-03-24 22:22 UTC (permalink / raw)
  To: Phil Blundell; +Cc: Patches and discussions about the oe-core layer

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


> On Mar 24, 2016, at 11:32 AM, Phil Blundell <pb@pbcl.net> wrote:
> 
> On Thu, 2016-03-24 at 10:37 -0700, Andre McCurdy wrote:
>> 
>> Renaming armv8a -> aarch32 is going to affect almost every line in
>> the patch. We should probably drop the current patch from master-
>> next.
> 
> "AArch32" applies retrospectively to all older versions of the ARM
> architecture as well,

not really. Arm refers to aarch32 specifically when we use 32-bit on ARMv8
so atleast we are speaking same terms.

> so it's not obvious to me that a straight rename
> of the existing "armv8a" override to "aarch32" would be the right thing
> either.
> 
> I think the whole approach to ARMv8 and AArch64 in OE needs to be
> carefully thought through before we start landing any patches for that
> stuff.  We have a tangled enough maze of overrides right now and I
> think we should make all efforts to avoid it getting worse.

Totally agreed.
The current tunes we have are probably sufficient for 64bit case and it simple
and nice. However, the fact of people running 32bit userspace on a53 SOCs
is a reality due to porting reasons or resource reasons. So I think divorcing
legacy tunes and just having aarch64 and another one for aarch32 is going to suffice

[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 211 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24 21:41           ` Richard Purdie
@ 2016-03-24 22:28             ` Khem Raj
  0 siblings, 0 replies; 11+ messages in thread
From: Khem Raj @ 2016-03-24 22:28 UTC (permalink / raw)
  To: Richard Purdie; +Cc: Patches and discussions about the oe-core layer

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


> On Mar 24, 2016, at 2:41 PM, Richard Purdie <richard.purdie@linuxfoundation.org> wrote:
> 
> On Thu, 2016-03-24 at 18:32 +0000, Phil Blundell wrote:
>> On Thu, 2016-03-24 at 10:37 -0700, Andre McCurdy wrote:
>>> 
>>> Renaming armv8a -> aarch32 is going to affect almost every line in
>>> the patch. We should probably drop the current patch from master-
>>> next.
>> 
>> "AArch32" applies retrospectively to all older versions of the ARM
>> architecture as well, so it's not obvious to me that a straight
>> rename
>> of the existing "armv8a" override to "aarch32" would be the right
>> thing
>> either.
>> 
>> I think the whole approach to ARMv8 and AArch64 in OE needs to be
>> carefully thought through before we start landing any patches for
>> that
>> stuff.  We have a tangled enough maze of overrides right now and I
>> think we should make all efforts to avoid it getting worse.
> 
> Agreed, I'm planning to drop the patch triggering this from -next and
> defer it until 2.2. The discussions can happen in the meantime to get a
> patchset we're all happy with.

hopefully we will be able to cherry-pick into 2.1 at later stage ?

> 
> Cheers,
> 
> Richard


[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 211 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24 22:22           ` Khem Raj
@ 2016-03-24 23:21             ` Phil Blundell
  2016-03-24 23:58               ` Khem Raj
  0 siblings, 1 reply; 11+ messages in thread
From: Phil Blundell @ 2016-03-24 23:21 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer

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

On Thu, 2016-03-24 at 15:22 -0700, Khem Raj wrote:

> > On Mar 24, 2016, at 11:32 AM, Phil Blundell <pb@pbcl.net> wrote:
> > 
> > On Thu, 2016-03-24 at 10:37 -0700, Andre McCurdy wrote:
> >> 
> >> Renaming armv8a -> aarch32 is going to affect almost every line in
> >> the patch. We should probably drop the current patch from master-
> >> next.
> > 
> > "AArch32" applies retrospectively to all older versions of the ARM
> > architecture as well,
> 
> not really. Arm refers to aarch32 specifically when we use 32-bit on ARMv8
> so atleast we are speaking same terms.


See the glossary at:

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.aeg0014g/ABCDEFGH.html

AArch32 state
        The ARM 32-bit Execution state that uses 32-bit general purpose
        registers, and a 32-bit program counter (PC), stack pointer
        (SP), and link register (LR). AArch32 Execution state provides a
        choice of two instruction sets, A32 and T32.
        
        In implementations of versions of the ARM architecture before
        ARMv8, and in the ARM R and M architecture profiles, execution
        is always in AArch32 state.
        

p.



[-- Attachment #2: Type: text/html, Size: 1940 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a
  2016-03-24 23:21             ` Phil Blundell
@ 2016-03-24 23:58               ` Khem Raj
  0 siblings, 0 replies; 11+ messages in thread
From: Khem Raj @ 2016-03-24 23:58 UTC (permalink / raw)
  To: Phil Blundell; +Cc: Patches and discussions about the oe-core layer


[-- Attachment #1.1: Type: text/plain, Size: 1424 bytes --]


> On Mar 24, 2016, at 4:21 PM, Phil Blundell <pb@pbcl.net> wrote:
> 
> On Thu, 2016-03-24 at 15:22 -0700, Khem Raj wrote:
>> 
>> > On Mar 24, 2016, at 11:32 AM, Phil Blundell <pb@pbcl.net <mailto:pb@pbcl.net>> wrote:
>> >
>> > On Thu, 2016-03-24 at 10:37 -0700, Andre McCurdy wrote:
>> >>
>> >> Renaming armv8a -> aarch32 is going to affect almost every line in
>> >> the patch. We should probably drop the current patch from master-
>> >> next.
>> >
>> > "AArch32" applies retrospectively to all older versions of the ARM
>> > architecture as well,
>> 
>> not really. Arm refers to aarch32 specifically when we use 32-bit on ARMv8
>> so atleast we are speaking same terms.
> 
> See the glossary at:
> 
> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.aeg0014g/ABCDEFGH.html <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.aeg0014g/ABCDEFGH.html>
> 
> AArch32 state
> The ARM 32-bit Execution state that uses 32-bit general purpose registers, and a 32-bit program counter (PC), stack pointer (SP), and link register (LR). AArch32 Execution state provides a choice of two instruction sets, A32 and T32.
> 
> In implementations of versions of the ARM architecture before ARMv8, and in the ARM R and M architecture profiles, execution is always in AArch32 state.

I am not saying its any different technically. But aarch32 as term is only used w.r.t. armv8

> 
> p.


[-- Attachment #1.2: Type: text/html, Size: 6965 bytes --]

[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 211 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-03-24 23:58 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-24  3:19 [PATCH] gcc-configure-common.inc: duplicate armv7a over-ride for armv8a Andre McCurdy
2016-03-24  4:19 ` Khem Raj
2016-03-24  5:16   ` Andre McCurdy
2016-03-24  8:03     ` Khem Raj
2016-03-24 17:37       ` Andre McCurdy
2016-03-24 18:32         ` Phil Blundell
2016-03-24 21:41           ` Richard Purdie
2016-03-24 22:28             ` Khem Raj
2016-03-24 22:22           ` Khem Raj
2016-03-24 23:21             ` Phil Blundell
2016-03-24 23:58               ` Khem Raj

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.