All of lore.kernel.org
 help / color / mirror / Atom feed
* [kvm-unit-tests PATCH] s390x/snippets: Define all things that are needed to link the libc
@ 2021-10-08  9:26 Thomas Huth
  2021-10-13  9:51 ` Janosch Frank
  0 siblings, 1 reply; 2+ messages in thread
From: Thomas Huth @ 2021-10-08  9:26 UTC (permalink / raw)
  To: Janosch Frank, kvm; +Cc: linux-s390, Claudio Imbrenda, David Hildenbrand

In the long run, we want to use parts of the libc like memset() etc.,
too. However, to be able to link it correctly, we have to provide
some stub functions like puts() and exit() to avoid that too much
other stuff from the lib folder gets pulled into the binaries, which
we cannot provide in the snippets (like the sclp support).

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 s390x/Makefile            |  2 +-
 s390x/snippets/c/cstart.S | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/s390x/Makefile b/s390x/Makefile
index ef8041a..b2a7c1f 100644
--- a/s390x/Makefile
+++ b/s390x/Makefile
@@ -80,7 +80,7 @@ asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o
 FLATLIBS = $(libcflat)
 
 SNIPPET_DIR = $(TEST_DIR)/snippets
-snippet_asmlib = $(SNIPPET_DIR)/c/cstart.o
+snippet_asmlib = $(SNIPPET_DIR)/c/cstart.o lib/auxinfo.o
 
 # perquisites (=guests) for the snippet hosts.
 # $(TEST_DIR)/<snippet-host>.elf: snippets = $(SNIPPET_DIR)/<c/asm>/<snippet>.gbin
diff --git a/s390x/snippets/c/cstart.S b/s390x/snippets/c/cstart.S
index a175480..1862703 100644
--- a/s390x/snippets/c/cstart.S
+++ b/s390x/snippets/c/cstart.S
@@ -20,6 +20,17 @@ start:
 	lghi	%r15, 0x4000 - 160
 	sam64
 	brasl	%r14, main
+	/*
+	 * If main() returns, we stop the CPU with the code below. We also
+	 * route some functions that are required by the libc (but not usable
+	 * from snippets) to the CPU stop code below, so that snippets can
+	 * still be linked against the libc code (to use non-related functions
+	 * like memset() etc.)
+	 */
+.global puts
+.global exit
+puts:
+exit:
 	/* For now let's only use cpu 0 in snippets so this will always work. */
 	xgr	%r0, %r0
 	sigp    %r2, %r0, SIGP_STOP
-- 
2.27.0


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

* Re: [kvm-unit-tests PATCH] s390x/snippets: Define all things that are needed to link the libc
  2021-10-08  9:26 [kvm-unit-tests PATCH] s390x/snippets: Define all things that are needed to link the libc Thomas Huth
@ 2021-10-13  9:51 ` Janosch Frank
  0 siblings, 0 replies; 2+ messages in thread
From: Janosch Frank @ 2021-10-13  9:51 UTC (permalink / raw)
  To: Thomas Huth, kvm; +Cc: linux-s390, Claudio Imbrenda, David Hildenbrand

On 10/8/21 11:26, Thomas Huth wrote:
> In the long run, we want to use parts of the libc like memset() etc.,
> too. However, to be able to link it correctly, we have to provide
> some stub functions like puts() and exit() to avoid that too much
> other stuff from the lib folder gets pulled into the binaries, which
> we cannot provide in the snippets (like the sclp support).
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>

Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
Thanks, picked!

> ---
>   s390x/Makefile            |  2 +-
>   s390x/snippets/c/cstart.S | 11 +++++++++++
>   2 files changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/s390x/Makefile b/s390x/Makefile
> index ef8041a..b2a7c1f 100644
> --- a/s390x/Makefile
> +++ b/s390x/Makefile
> @@ -80,7 +80,7 @@ asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o
>   FLATLIBS = $(libcflat)
>   
>   SNIPPET_DIR = $(TEST_DIR)/snippets
> -snippet_asmlib = $(SNIPPET_DIR)/c/cstart.o
> +snippet_asmlib = $(SNIPPET_DIR)/c/cstart.o lib/auxinfo.o
>   
>   # perquisites (=guests) for the snippet hosts.
>   # $(TEST_DIR)/<snippet-host>.elf: snippets = $(SNIPPET_DIR)/<c/asm>/<snippet>.gbin
> diff --git a/s390x/snippets/c/cstart.S b/s390x/snippets/c/cstart.S
> index a175480..1862703 100644
> --- a/s390x/snippets/c/cstart.S
> +++ b/s390x/snippets/c/cstart.S
> @@ -20,6 +20,17 @@ start:
>   	lghi	%r15, 0x4000 - 160
>   	sam64
>   	brasl	%r14, main
> +	/*
> +	 * If main() returns, we stop the CPU with the code below. We also
> +	 * route some functions that are required by the libc (but not usable
> +	 * from snippets) to the CPU stop code below, so that snippets can
> +	 * still be linked against the libc code (to use non-related functions
> +	 * like memset() etc.)
> +	 */
> +.global puts
> +.global exit
> +puts:
> +exit:
>   	/* For now let's only use cpu 0 in snippets so this will always work. */
>   	xgr	%r0, %r0
>   	sigp    %r2, %r0, SIGP_STOP
> 


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

end of thread, other threads:[~2021-10-13  9:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-08  9:26 [kvm-unit-tests PATCH] s390x/snippets: Define all things that are needed to link the libc Thomas Huth
2021-10-13  9:51 ` Janosch Frank

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.