On s390, GCC does not like the string initialization in this case. When
ValueToWrite is initialized this way, GCC tries to copy the entire string
into an ACPI_OBJECT instead of just the pointer (see the use in the call
to memcpy()). So, move the init so GCC recognizes that ValueToWrite is
only a pointer, and not a whole string that needs to be moved.
diff -Naur acpica-unix2-20200214.orig/source/components/debugger/dbtest.c acpica-unix2-20200214/source/components/debugger/dbtest.c
--- acpica-unix2-20200214.orig/source/components/debugger/dbtest.c 2020-02-14 10:33:54.000000000 -0700
+++ acpica-unix2-20200214/source/components/debugger/dbtest.c 2020-02-25 10:50:42.793372070 -0700
@@ -719,9 +719,10 @@
ACPI_OBJECT *Temp1 = NULL;
ACPI_OBJECT *Temp2 = NULL;
ACPI_OBJECT *Temp3 = NULL;
- char *ValueToWrite = "Test String from AML Debugger";
+ char *ValueToWrite = NULL;
ACPI_OBJECT WriteValue;
ACPI_STATUS Status;
+ const char *TestStr = "Test String from AML Debugger";
/* Read the original value */
@@ -737,6 +738,9 @@
/* Write a new value */
+ ValueToWrite = AcpiOsAllocateZeroed(strlen(TestStr)+1);
+ strncpy(ValueToWrite, TestStr, strlen(TestStr)+1);
+
WriteValue.Type = ACPI_TYPE_STRING;
WriteValue.String.Length = strlen (ValueToWrite);
WriteValue.String.Pointer = ValueToWrite;
@@ -790,6 +794,7 @@
if (Temp1) {AcpiOsFree (Temp1);}
if (Temp2) {AcpiOsFree (Temp2);}
if (Temp3) {AcpiOsFree (Temp3);}
+ if (ValueToWrite) {AcpiOsFree (ValueToWrite);}
return (Status);
}