From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [DPDK/other Bug 1727] arparse LTO warnings
Date: Tue, 17 Jun 2025 23:08:46 +0000 [thread overview]
Message-ID: <bug-1727-3@https.bugs.dpdk.org/> (raw)
[-- Attachment #1: Type: text/plain, Size: 24371 bytes --]
https://bugs.dpdk.org/show_bug.cgi?id=1727
Bug ID: 1727
Summary: arparse LTO warnings
Product: DPDK
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: other
Assignee: dev@dpdk.org
Reporter: stephen@networkplumber.org
Target Milestone: ---
Enabling LTO detects more warnings in argparse test.
Looks like argparse is referencing invalid arguments before checking.
n function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_basic_param’ at
../app/test/test_argparse.c:118:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_basic_param’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_basic_param’ at
../app/test/test_argparse.c:123:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_basic_param’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_name’ at
../app/test/test_argparse.c:137:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_name’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_name’ at
../app/test/test_argparse.c:142:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_name’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_name’ at
../app/test/test_argparse.c:147:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_name’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_name’ at
../app/test/test_argparse.c:152:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_name’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_name’ at
../app/test/test_argparse.c:158:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_name’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_name’ at
../app/test/test_argparse.c:163:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_name’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_name’ at
../app/test/test_argparse.c:168:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_name’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_help’ at
../app/test/test_argparse.c:182:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_help’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_has_val’ at
../app/test/test_argparse.c:203:9:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_has_val’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_saver’ at
../app/test/test_argparse.c:221:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_saver’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_saver’ at
../app/test/test_argparse.c:229:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_saver’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_saver’ at
../app/test/test_argparse.c:237:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_saver’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_saver’ at
../app/test/test_argparse.c:245:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_saver’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_flags’ at
../app/test/test_argparse.c:263:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_flags’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_flags’ at
../app/test/test_argparse.c:269:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_flags’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_flags’ at
../app/test/test_argparse.c:281:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_flags’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_repeat’ at
../app/test/test_argparse.c:296:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_repeat’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_arg_repeat’ at
../app/test/test_argparse.c:302:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_arg_repeat’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_option’ at
../app/test/test_argparse.c:317:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_option’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_invalid_option’ at
../app/test/test_argparse.c:323:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function ‘test_argparse_invalid_option’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_opt_autosave_parse_int_of_no_val’ at
../app/test/test_argparse.c:340:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_opt_autosave_parse_int_of_no_val’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_opt_autosave_parse_int_of_required_val’ at
../app/test/test_argparse.c:373:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_opt_autosave_parse_int_of_required_val’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_opt_autosave_parse_int_of_optional_val’ at
../app/test/test_argparse.c:417:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_opt_autosave_parse_int_of_optional_val’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_opt_callback_parse_int_of_no_val’ at
../app/test/test_argparse.c:490:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_opt_callback_parse_int_of_no_val’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_opt_callback_parse_int_of_required_val’ at
../app/test/test_argparse.c:541:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_opt_callback_parse_int_of_required_val’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_opt_callback_parse_int_of_optional_val’ at
../app/test/test_argparse.c:605:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_opt_callback_parse_int_of_optional_val’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_pos_autosave_parse_int’ at
../app/test/test_argparse.c:659:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_pos_autosave_parse_int’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
| ^
In function ‘test_argparse_copy’,
inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
inlined from ‘test_argparse_pos_callback_parse_int’ at
../app/test/test_argparse.c:721:8:
../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a
region of size 0 overflows the destination [-Wstringop-overflow=]
96 | memcpy(&dst->args[i], &src->args[i],
sizeof(src->args[i]));
| ^
../app/test/test_argparse.c: In function
‘test_argparse_pos_callback_parse_int’:
../app/test/test_argparse.c:106:36: note: at offset 184 into destination object
‘obj’ of size 184
106 | static struct rte_argparse obj = argparse_templater();
|
--
You are receiving this mail because:
You are the assignee for the bug.
[-- Attachment #2: Type: text/html, Size: 26729 bytes --]
next reply other threads:[~2025-06-17 23:08 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-17 23:08 bugzilla [this message]
[not found] <bug-1727-3@http.bugs.dpdk.org/>
2026-01-19 18:35 ` [DPDK/other Bug 1727] arparse LTO warnings bugzilla
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-1727-3@https.bugs.dpdk.org/ \
--to=bugzilla@dpdk.org \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.