From: Lennart Poettering Date: Mon, 3 Dec 2018 16:33:28 +0000 (+0100) Subject: static-destruct: turn on new _variable_no_sanitize_address_ variable for STATIC_DESTR... X-Git-Tag: v240~148^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7fdf40d247361a510661915fbbddddb97b9aa8ff;p=thirdparty%2Fsystemd.git static-destruct: turn on new _variable_no_sanitize_address_ variable for STATIC_DESTRUCTOR_REGISTER --- diff --git a/src/basic/static-destruct.h b/src/basic/static-destruct.h index 5c0bea31a6f..9f7392121da 100644 --- a/src/basic/static-destruct.h +++ b/src/basic/static-destruct.h @@ -21,10 +21,14 @@ typedef struct StaticDestructor { typeof(variable) *q = p; \ func(q); \ } \ - /* The actual destructor structure */ \ + /* The actual destructor structure we place in a special section to find it */ \ _section_("SYSTEMD_STATIC_DESTRUCT") \ + /* We pick pointer alignment, since that is apparently what gcc does for static variables */ \ _alignptr_ \ + /* Make sure this is not dropped from the image because not explicitly referenced */ \ _used_ \ + /* Make sure that AddressSanitizer doesn't pad this variable: we want everything in this section packed next to each other so that we can enumerate it. */ \ + _variable_no_sanitize_address_ \ static const StaticDestructor UNIQ_T(static_destructor_entry, uq) = { \ .data = &(variable), \ .destroy = UNIQ_T(static_destructor_wrapper, uq), \