.. zephyr:code-sample:: llext-shell-loader
   :name: Linkable loadable extensions shell module
   :relevant-api: llext

   Manage loadable extensions using shell commands.

Overview
********

This example provides shell access to the :ref:`llext` system and provides the
ability to manage loadable code extensions in the shell.

Requirements
************

A board with a supported llext architecture and shell capable console.

Building
********

.. zephyr-app-commands::
   :zephyr-app: samples/subsys/llext/shell_loader
   :board: tdk_robokit1
   :goals: build
   :compact:

.. note:: You may need to disable memory protection for the sample to work (e.g. CONFIG_ARM_MPU=n).

Running
*******

Once the board has booted, you will be presented with a shell prompt.
All the llext system related commands are available as sub-commands of llext
which can be seen with llext help

.. code-block:: console

  uart:~$ llext help
  llext - Loadable extension commands
  Subcommands:
    list          :List loaded extensions and their size in memory
    load_hex      :Load an elf file encoded in hex directly from the shell input.
                   Syntax:
                   <ext_name> <ext_hex_string>
    unload        :Unload an extension by name. Syntax:
                   <ext_name>
    list_symbols  :List extension symbols. Syntax:
                   <ext_name>
    call_fn       :Call extension function with prototype void fn(void). Syntax:
                   <ext_name> <function_name>

A hello world C file can be found in tests/subsys/llext/hello_world/hello_world.c

This can be built into a relocatable elf usable on arm v7 platforms. It can be
inspected with some binutils to see symbols, sections, and relocations.
Then using additional tools converted to a hex string usable by the llext
load_hex shell command.

On a host machine with the zephyr sdk setup and the arm toolchain in PATH

.. code-block:: console

  $ arm-zephyr-eabi-gcc -mlong-calls -mthumb -c -o hello_world.elf tests/subsys/llext/hello_world/hello_world.c
  $ arm-zephyr-eabi-objdump -r -d -x hello_world.elf

	hello_world.elf:     file format elf32-littlearm
	hello_world.elf
	architecture: armv4t, flags 0x00000011:
	HAS_RELOC, HAS_SYMS
	start address 0x00000000
	private flags = 0x5000000: [Version5 EABI]

	Sections:
	Idx Name          Size      VMA       LMA       File off  Algn
	  0 .text         00000038  00000000  00000000  00000034  2**2
	                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
	  1 .data         00000000  00000000  00000000  0000006c  2**0
	                  CONTENTS, ALLOC, LOAD, DATA
	  2 .bss          00000000  00000000  00000000  0000006c  2**0
	                  ALLOC
	  3 .rodata       00000025  00000000  00000000  0000006c  2**2
	                  CONTENTS, ALLOC, LOAD, READONLY, DATA
	  4 .comment      00000021  00000000  00000000  00000091  2**0
	                  CONTENTS, READONLY
	  5 .ARM.attributes 0000002a  00000000  00000000  000000b2  2**0
	                  CONTENTS, READONLY
	SYMBOL TABLE:
	00000000 l    df *ABS*	00000000 hello_world.c
	00000000 l    d  .text	00000000 .text
	00000000 l    d  .data	00000000 .data
	00000000 l    d  .bss	00000000 .bss
	00000000 l    d  .rodata	00000000 .rodata
	00000000 l     O .rodata	00000004 number
	00000000 l    d  .comment	00000000 .comment
	00000000 l    d  .ARM.attributes	00000000 .ARM.attributes
	00000000 g     F .text	00000034 hello_world
	00000000         *UND*	00000000 printk



	Disassembly of section .text:

	00000000 <hello_world>:
	   0:	b580      	push	{r7, lr}
	   2:	af00      	add	r7, sp, #0
	   4:	4b08      	ldr	r3, [pc, #32]	; (28 <hello_world+0x28>)
	   6:	0018      	movs	r0, r3
	   8:	4b08      	ldr	r3, [pc, #32]	; (2c <hello_world+0x2c>)
	   a:	f000 f813 	bl	34 <hello_world+0x34>
	   e:	222a      	movs	r2, #42	; 0x2a
	  10:	4b07      	ldr	r3, [pc, #28]	; (30 <hello_world+0x30>)
	  12:	0011      	movs	r1, r2
	  14:	0018      	movs	r0, r3
	  16:	4b05      	ldr	r3, [pc, #20]	; (2c <hello_world+0x2c>)
	  18:	f000 f80c 	bl	34 <hello_world+0x34>
	  1c:	46c0      	nop			; (mov r8, r8)
	  1e:	46bd      	mov	sp, r7
	  20:	bc80      	pop	{r7}
	  22:	bc01      	pop	{r0}
	  24:	4700      	bx	r0
	  26:	46c0      	nop			; (mov r8, r8)
	  28:	00000004 	.word	0x00000004
				28: R_ARM_ABS32	.rodata
	  2c:	00000000 	.word	0x00000000
				2c: R_ARM_ABS32	printk
	  30:	00000014 	.word	0x00000014
				30: R_ARM_ABS32	.rodata
	  34:	4718      	bx	r3
	  36:	46c0      	nop			; (mov r8, r8)

  $ xxd -p hello_world.elf | tr -d '\n'

The resulting hex string can be used to load the extension.

.. code-block:: console

  uart:~$ llext load_hex hello_world 7f454c4601010100000000000000000001002800010000000000000000000000680200000000000534000000000028000b000a0080b500af084b1800084b00f013f82a22074b11001800054b00f00cf8c046bd4680bc01bc0047c0460400000000000000140000001847c0462a00000068656c6c6f20776f726c640a0000000041206e756d62657220697320256c750a00004743433a20285a65706879722053444b20302e31362e31292031322e322e30004129000000616561626900011f000000053454000602080109011204140115011703180119011a011e06000000000000000000000000000000000100000000000000000000000400f1ff000000000000000000000000030001000000000000000000000000000300030000000000000000000000000003000400000000000000000000000000030005000f00000000000000000000000000050012000000000000000400000001000500190000000000000000000000000001000f0000002800000000000000000001001900000034000000000000000000010000000000000000000000000003000600000000000000000000000000030007001c000000010000003400000012000100280000000000000000000000100000000068656c6c6f5f776f726c642e63002464006e756d6265720024740068656c6c6f5f776f726c64007072696e746b000028000000020500002c000000020e00003000000002050000002e73796d746162002e737472746162002e7368737472746162002e72656c2e74657874002e64617461002e627373002e726f64617461002e636f6d6d656e74002e41524d2e6174747269627574657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f0000000100000006000000000000003400000038000000000000000000000004000000000000001b000000090000004000000000000000fc0100001800000008000000010000000400000008000000250000000100000003000000000000006c00000000000000000000000000000001000000000000002b0000000800000003000000000000006c0000000000000000000000000000000100000000000000300000000100000002000000000000006c00000025000000000000000000000004000000000000003800000001000000300000000000000091000000210000000000000000000000010000000100000041000000030000700000000000000000b20000002a0000000000000000000000010000000000000001000000020000000000000000000000dc000000f0000000090000000d000000040000001000000009000000030000000000000000000000cc0100002f0000000000000000000000010000000000000011000000030000000000000000000000140200005100000000000000000000000100000000000000

This extension can then be seen in the list of loaded extensions (`list`), its symbols printed
(`list_symbols`), and the hello_world function which the extension exports can be called and
run (`call_fn`).

.. code-block:: console

  uart:~$ llext call_fn hello_world hello_world
  hello world
  A number is 42

In this sample there are 3 absolute (R_ARM_ABS32) relocations, 2 of which are meant to hold addresses into the .rodata sections where the strings are located. A third is an address of where the printk function (symbol) can be found. At load time llext replaces the values in the .text section with real memory addresses so that printk works as expected with the strings included in the hello world sample.
