diff for duplicates of <87lfljrted.fsf@linaro.org>
diff --git a/a/1.txt b/N1/1.txt
index b5083f0..9e0d0aa 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,4 +1,3 @@
-
Aleksandar Markovic <1880225@bugs.launchpad.net> writes:
> I just want to stress once again that the test was performed on a 32-bit
@@ -8,4 +7,162 @@ Ahh - OK that makes sense. I'll see if I can replicate.
--
-Alex Bennée
\ No newline at end of file
+Alex Bennée
+
+--
+You received this bug notification because you are a member of qemu-
+devel-ml, which is subscribed to QEMU.
+https://bugs.launchpad.net/bugs/1880225
+
+Title:
+ Emulation of some arm programs fail with "Assertion `have_guest_base'
+ failed."
+
+Status in QEMU:
+ New
+
+Bug description:
+ This issue is observer with QEMU ToT, checked out around May 15th (but
+ I believe it is present in current master too), and wasn't present in
+ QEMU v5.0.0.
+
+ I am using 32-bit Intel(R) Pentium(R) M processor 1.73GHz host.
+
+ Arm cross-compiler is a standard cross-compiler that comes with
+ Debian-based distributions, and gcc version is:
+
+ $ arm-linux-gnueabi-gcc --version
+ arm-linux-gnueabi-gcc (Debian 8.3.0-2) 8.3.0
+
+ Compile this program with cross compiler:
+
+ $ arm-linux-gnueabi-gcc -O2 -static toupper_string.c -o
+ toupper_string-arm
+
+ Emulation with QEMU v5.0.0 is correct, and gives expected output:
+
+ $ ~/Build/qemu-5.0.0/build-gcc/arm-linux-user/qemu-arm ./toupper_string-arm
+ CONTROL RESULT: (toupper_string)
+ nwlrbbmqbhcdarz owkkyhiddqscdxr jmowfrxsjybldbe fsarcbynecdyggx xpklorellnmpapq
+ NWLRBBMQBHCDARZ OWKKYHIDDQSCDXR JMOWFRXSJYBLDBE FSARCBYNECDYGGX XPKLORELLNMPAPQ
+
+ While, in case of QEMU master it fails:
+
+ $ ~/Build/qemu-master/build-gcc/arm-linux-user/qemu-arm ./toupper_string-arm
+ qemu-arm: /home/rtrk/Build/qemu-master/linux-user/elfload.c:2294: probe_guest_base: Assertion `have_guest_base' failed.
+ Aborted
+
+ There are many other programs that exibit the same behavior. The
+ failure is arm-sprecific.
+
+
+ -----------------------------------------------------
+
+ source code: (let's call this file toupper_string.c) (similar file is
+ also in attachment)
+
+
+ #include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <unistd.h>
+
+
+ #define MAX_STRING_LENGHT 15
+ #define NUMBER_OF_RANDOM_STRINGS 100
+ #define DEFAULT_NUMBER_OF_REPETITIONS 30000
+ #define MAX_NUMBER_OF_REPETITIONS 1000000000
+ #define NUMBER_OF_CONTROL_PRINT_ITEMS 5
+
+ /* Structure for keeping an array of strings */
+ struct StringStruct {
+ char chars[MAX_STRING_LENGHT + 1];
+ };
+
+ /**
+ * Sets characters of the given string to random small letters a-z.
+ * @param s String to get random characters.
+ * @len Length of the input string.
+ */
+ static void gen_random_string(char *chars, const int len)
+ {
+ static const char letters[] = "abcdefghijklmnopqrstuvwxyz";
+
+ for (size_t i = 0; i < len; i++) {
+ chars[i] = letters[rand() % (sizeof(letters) - 1)];
+ }
+ chars[len] = 0;
+ }
+
+ void main (int argc, char* argv[])
+ {
+ struct StringStruct random_strings[NUMBER_OF_RANDOM_STRINGS];
+ struct StringStruct strings_to_be_uppercased[NUMBER_OF_RANDOM_STRINGS];
+ int32_t number_of_repetitions = DEFAULT_NUMBER_OF_REPETITIONS;
+ int32_t option;
+
+ /* Parse command line options */
+ while ((option = getopt(argc, argv, "n:")) != -1) {
+ if (option == 'n') {
+ int32_t user_number_of_repetitions = atoi(optarg);
+ /* Check if the value is a negative number */
+ if (user_number_of_repetitions < 1) {
+ fprintf(stderr, "Error ... Value for option '-n' cannot be a "
+ "negative number.\n");
+ exit(EXIT_FAILURE);
+ }
+ /* Check if the value is a string or zero */
+ if (user_number_of_repetitions == 0) {
+ fprintf(stderr, "Error ... Invalid value for option '-n'.\n");
+ exit(EXIT_FAILURE);
+ }
+ /* Check if the value is too large */
+ if (user_number_of_repetitions > MAX_NUMBER_OF_REPETITIONS) {
+ fprintf(stderr, "Error ... Value for option '-n' cannot be "
+ "more than %d.\n", MAX_NUMBER_OF_REPETITIONS);
+ exit(EXIT_FAILURE);
+ }
+ number_of_repetitions = user_number_of_repetitions;
+ } else {
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ /* Create an array of strings with random content */
+ srand(1);
+ for (size_t i = 0; i < NUMBER_OF_RANDOM_STRINGS; i++) {
+ gen_random_string(random_strings[i].chars, MAX_STRING_LENGHT);
+ }
+
+ /* Perform uppercasing of a set of random strings multiple times */
+ for (size_t j = 0; j < number_of_repetitions; j++) {
+ /* Copy initial set of random strings to the set to be uppercased */
+ memcpy(strings_to_be_uppercased, random_strings,
+ NUMBER_OF_RANDOM_STRINGS * (MAX_STRING_LENGHT + 1));
+ /* Do actual changing case to uppercase */
+ for (size_t i = 0; i < NUMBER_OF_RANDOM_STRINGS; i++) {
+ int k = 0;
+
+ while (strings_to_be_uppercased[i].chars[k]) {
+ char ch = strings_to_be_uppercased[i].chars[k] - 32;
+ memcpy((void *)strings_to_be_uppercased[i].chars + k,
+ &ch, 1);
+ k++;
+ }
+ }
+ }
+
+ /* Control printing */
+ printf("CONTROL RESULT: (toupper_string)\n");
+ for (size_t i = 0; i < NUMBER_OF_CONTROL_PRINT_ITEMS; i++) {
+ printf(" %s", random_strings[i].chars);
+ }
+ printf("\n");
+ for (size_t i = 0; i < NUMBER_OF_CONTROL_PRINT_ITEMS; i++) {
+ printf(" %s", strings_to_be_uppercased[i].chars);
+ }
+ printf("\n");
+ }
+
+To manage notifications about this bug go to:
+https://bugs.launchpad.net/qemu/+bug/1880225/+subscriptions
\ No newline at end of file
diff --git a/a/content_digest b/N1/content_digest
index 3690c34..30f030d 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -5,19 +5,16 @@
"ref\000159019649466.20452.12164074661904513625.malone\@soybean.canonical.com\0"
]
[
- "From\0Alex Benn\303\251e <alex.bennee\@linaro.org>\0"
+ "From\0Alex Benn\303\251e <1880225\@bugs.launchpad.net>\0"
]
[
"Subject\0Re: [Bug 1880225] Re: Emulation of some arm programs fail with \"Assertion `have_guest_base' failed.\"\0"
]
[
- "Date\0Sat, 23 May 2020 08:40:26 +0100\0"
+ "Date\0Sat, 23 May 2020 07:40:26 -0000\0"
]
[
- "To\0Bug 1880225 <1880225\@bugs.launchpad.net>\0"
-]
-[
- "Cc\0qemu-devel\@nongnu.org\0"
+ "To\0qemu-devel\@nongnu.org\0"
]
[
"\0000:1\0"
@@ -26,7 +23,6 @@
"b\0"
]
[
- "\n",
"Aleksandar Markovic <1880225\@bugs.launchpad.net> writes:\n",
"\n",
"> I just want to stress once again that the test was performed on a 32-bit\n",
@@ -36,7 +32,165 @@
"\n",
"\n",
"-- \n",
- "Alex Benn\303\251e"
+ "Alex Benn\303\251e\n",
+ "\n",
+ "-- \n",
+ "You received this bug notification because you are a member of qemu-\n",
+ "devel-ml, which is subscribed to QEMU.\n",
+ "https://bugs.launchpad.net/bugs/1880225\n",
+ "\n",
+ "Title:\n",
+ " Emulation of some arm programs fail with \"Assertion `have_guest_base'\n",
+ " failed.\"\n",
+ "\n",
+ "Status in QEMU:\n",
+ " New\n",
+ "\n",
+ "Bug description:\n",
+ " This issue is observer with QEMU ToT, checked out around May 15th (but\n",
+ " I believe it is present in current master too), and wasn't present in\n",
+ " QEMU v5.0.0.\n",
+ "\n",
+ " I am using 32-bit Intel(R) Pentium(R) M processor 1.73GHz host.\n",
+ "\n",
+ " Arm cross-compiler is a standard cross-compiler that comes with\n",
+ " Debian-based distributions, and gcc version is:\n",
+ "\n",
+ " \$ arm-linux-gnueabi-gcc --version\n",
+ " arm-linux-gnueabi-gcc (Debian 8.3.0-2) 8.3.0\n",
+ "\n",
+ " Compile this program with cross compiler:\n",
+ "\n",
+ " \$ arm-linux-gnueabi-gcc -O2 -static toupper_string.c -o\n",
+ " toupper_string-arm\n",
+ "\n",
+ " Emulation with QEMU v5.0.0 is correct, and gives expected output:\n",
+ "\n",
+ " \$ ~/Build/qemu-5.0.0/build-gcc/arm-linux-user/qemu-arm ./toupper_string-arm\n",
+ " CONTROL RESULT: (toupper_string)\n",
+ " nwlrbbmqbhcdarz owkkyhiddqscdxr jmowfrxsjybldbe fsarcbynecdyggx xpklorellnmpapq\n",
+ " NWLRBBMQBHCDARZ OWKKYHIDDQSCDXR JMOWFRXSJYBLDBE FSARCBYNECDYGGX XPKLORELLNMPAPQ\n",
+ "\n",
+ " While, in case of QEMU master it fails:\n",
+ "\n",
+ " \$ ~/Build/qemu-master/build-gcc/arm-linux-user/qemu-arm ./toupper_string-arm\n",
+ " qemu-arm: /home/rtrk/Build/qemu-master/linux-user/elfload.c:2294: probe_guest_base: Assertion `have_guest_base' failed.\n",
+ " Aborted\n",
+ "\n",
+ " There are many other programs that exibit the same behavior. The\n",
+ " failure is arm-sprecific.\n",
+ "\n",
+ " \n",
+ " -----------------------------------------------------\n",
+ "\n",
+ " source code: (let's call this file toupper_string.c) (similar file is\n",
+ " also in attachment)\n",
+ "\n",
+ " \n",
+ " #include <stdlib.h>\n",
+ " #include <string.h>\n",
+ " #include <stdio.h>\n",
+ " #include <unistd.h>\n",
+ "\n",
+ " \n",
+ " #define MAX_STRING_LENGHT 15\n",
+ " #define NUMBER_OF_RANDOM_STRINGS 100\n",
+ " #define DEFAULT_NUMBER_OF_REPETITIONS 30000\n",
+ " #define MAX_NUMBER_OF_REPETITIONS 1000000000\n",
+ " #define NUMBER_OF_CONTROL_PRINT_ITEMS 5\n",
+ "\n",
+ " /* Structure for keeping an array of strings */\n",
+ " struct StringStruct {\n",
+ " char chars[MAX_STRING_LENGHT + 1];\n",
+ " };\n",
+ "\n",
+ " /**\n",
+ " * Sets characters of the given string to random small letters a-z.\n",
+ " * \@param s String to get random characters.\n",
+ " * \@len Length of the input string.\n",
+ " */\n",
+ " static void gen_random_string(char *chars, const int len)\n",
+ " {\n",
+ " static const char letters[] = \"abcdefghijklmnopqrstuvwxyz\";\n",
+ "\n",
+ " for (size_t i = 0; i < len; i++) {\n",
+ " chars[i] = letters[rand() % (sizeof(letters) - 1)];\n",
+ " }\n",
+ " chars[len] = 0;\n",
+ " }\n",
+ "\n",
+ " void main (int argc, char* argv[])\n",
+ " {\n",
+ " struct StringStruct random_strings[NUMBER_OF_RANDOM_STRINGS];\n",
+ " struct StringStruct strings_to_be_uppercased[NUMBER_OF_RANDOM_STRINGS];\n",
+ " int32_t number_of_repetitions = DEFAULT_NUMBER_OF_REPETITIONS;\n",
+ " int32_t option;\n",
+ "\n",
+ " /* Parse command line options */\n",
+ " while ((option = getopt(argc, argv, \"n:\")) != -1) {\n",
+ " if (option == 'n') {\n",
+ " int32_t user_number_of_repetitions = atoi(optarg);\n",
+ " /* Check if the value is a negative number */\n",
+ " if (user_number_of_repetitions < 1) {\n",
+ " fprintf(stderr, \"Error ... Value for option '-n' cannot be a \"\n",
+ " \"negative number.\\n\");\n",
+ " exit(EXIT_FAILURE);\n",
+ " }\n",
+ " /* Check if the value is a string or zero */\n",
+ " if (user_number_of_repetitions == 0) {\n",
+ " fprintf(stderr, \"Error ... Invalid value for option '-n'.\\n\");\n",
+ " exit(EXIT_FAILURE);\n",
+ " }\n",
+ " /* Check if the value is too large */\n",
+ " if (user_number_of_repetitions > MAX_NUMBER_OF_REPETITIONS) {\n",
+ " fprintf(stderr, \"Error ... Value for option '-n' cannot be \"\n",
+ " \"more than %d.\\n\", MAX_NUMBER_OF_REPETITIONS);\n",
+ " exit(EXIT_FAILURE);\n",
+ " }\n",
+ " number_of_repetitions = user_number_of_repetitions;\n",
+ " } else {\n",
+ " exit(EXIT_FAILURE);\n",
+ " }\n",
+ " }\n",
+ "\n",
+ " /* Create an array of strings with random content */\n",
+ " srand(1);\n",
+ " for (size_t i = 0; i < NUMBER_OF_RANDOM_STRINGS; i++) {\n",
+ " gen_random_string(random_strings[i].chars, MAX_STRING_LENGHT);\n",
+ " }\n",
+ "\n",
+ " /* Perform uppercasing of a set of random strings multiple times */\n",
+ " for (size_t j = 0; j < number_of_repetitions; j++) {\n",
+ " /* Copy initial set of random strings to the set to be uppercased */\n",
+ " memcpy(strings_to_be_uppercased, random_strings,\n",
+ " NUMBER_OF_RANDOM_STRINGS * (MAX_STRING_LENGHT + 1));\n",
+ " /* Do actual changing case to uppercase */\n",
+ " for (size_t i = 0; i < NUMBER_OF_RANDOM_STRINGS; i++) {\n",
+ " int k = 0;\n",
+ " \n",
+ " while (strings_to_be_uppercased[i].chars[k]) { \n",
+ " char ch = strings_to_be_uppercased[i].chars[k] - 32; \n",
+ " memcpy((void *)strings_to_be_uppercased[i].chars + k,\n",
+ " &ch, 1);\n",
+ " k++; \n",
+ " } \n",
+ " }\n",
+ " }\n",
+ "\n",
+ " /* Control printing */\n",
+ " printf(\"CONTROL RESULT: (toupper_string)\\n\");\n",
+ " for (size_t i = 0; i < NUMBER_OF_CONTROL_PRINT_ITEMS; i++) {\n",
+ " printf(\" %s\", random_strings[i].chars);\n",
+ " }\n",
+ " printf(\"\\n\");\n",
+ " for (size_t i = 0; i < NUMBER_OF_CONTROL_PRINT_ITEMS; i++) {\n",
+ " printf(\" %s\", strings_to_be_uppercased[i].chars);\n",
+ " }\n",
+ " printf(\"\\n\");\n",
+ " }\n",
+ "\n",
+ "To manage notifications about this bug go to:\n",
+ "https://bugs.launchpad.net/qemu/+bug/1880225/+subscriptions"
]
-02cd10482e67faf6bd36eb8e28916c472f85a47994fa1003aa5cfcc6251baa79
+2675cf4a3c33471ac07642017666f3deb4cd8b25dee07a95e86bf3a672abce0f
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).