)]}'
{"id":"lttng-ust~9413","triplet_id":"lttng-ust~master~I1e6471d4607ac6aff89f16ef24d5370e804b7612","project":"lttng-ust","branch":"master","topic":"arm32-fix-memcpy-align","hashtags":[],"change_id":"I1e6471d4607ac6aff89f16ef24d5370e804b7612","subject":"Fix: use unaligned pointer accesses for lttng_inline_memcpy","status":"MERGED","created":"2023-02-02 16:23:55.000000000","updated":"2023-02-06 16:39:11.000000000","submitted":"2023-02-06 16:39:11.000000000","submitter":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"9413-arm32-fix-memcpy-align","meta_rev_id":"c6e4f61a41d2421a5dbbd3171deec1286c0a3ab5","_number":9413,"virtual_id_number":9413,"owner":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"actions":{},"labels":{"Code-Review":{"all":[{"value":0,"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]}],"values":{"-2":"This shall not be merged","-1":"I would prefer this is not merged as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0,"optional":true},"Verified":{"all":[{"value":0,"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]}],"values":{"-2":"Failure","-1":"Not built"," 0":"No score","+1":"Unstable","+2":"Success"},"description":"CI Build results","default_value":0,"optional":true},"CI-Build":{"all":[{"value":0,"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]}],"values":{" 0":"No score","+1":"Trigger a CI build"},"description":"Trigger CI builds","default_value":0,"optional":true},"Smoke-Build-Lvl1":{"all":[{"value":0,"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]}],"values":{" 0":"No score","+1":"Trigger a level 1 smoke build"},"description":"Trigger Level 1 Smoke builds","default_value":0,"optional":true},"Smoke-Build-Lvl2":{"all":[{"value":0,"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]}],"values":{" 0":"No score","+1":"Trigger a level 2 smoke build"},"description":"Trigger Level 2 Smoke builds","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{},"pending_reviewers":{},"reviewer_updates":[],"messages":[{"id":"322c93abae81c433db271cf1b5a1725ef94a337c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"date":"2023-02-02 16:23:55.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"fb98984daee6ebbee602f1f26288dde271f9dea9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"date":"2023-02-06 16:33:28.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"c6e4f61a41d2421a5dbbd3171deec1286c0a3ab5","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"date":"2023-02-06 16:39:11.000000000","message":"Change has been successfully pushed.","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"7fdb690ce0a7187b23f439d569ddd629a702871f","revisions":{"06edf3c5b1697e9724b1362ac89447b7d4928e87":{"kind":"REWORK","_number":1,"created":"2023-02-02 16:23:55.000000000","uploader":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"ref":"refs/changes/13/9413/1","fetch":{"anonymous http":{"url":"https://review.lttng.org/lttng-ust","ref":"refs/changes/13/9413/1","commands":{"Branch":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/1 \u0026\u0026 git checkout -b change-9413 FETCH_HEAD","Checkout":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.lttng.org/lttng-ust refs/changes/13/9413/1","Reset To":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9c96e34c54f6e2beda872953c4d5955967c9fef4","subject":"ust-ctl: allow runtime version checks","web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d9c96e34c54f6e2beda872953c4d5955967c9fef4"}]}],"author":{"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","date":"2023-02-02 15:25:57.000000000","tz":-300},"committer":{"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","date":"2023-02-02 16:20:11.000000000","tz":-300},"subject":"Fix: use unaligned pointer accesses for lttng_inline_memcpy","message":"Fix: use unaligned pointer accesses for lttng_inline_memcpy\n\nlttng_inline_memcpy receives pointers which can be unaligned. This\ncauses issues (traps) specifically on arm 32-bit with 8-byte strings\n(including \\0).\n\nUse unaligned pointer accesses for loads/stores within\nlttng_inline_memcpy instead.\n\nThere is an impact on code generation on some architectures.  Using the\nfollowing test code on godbolt.org:\n\nvoid copy16_aligned(void *dest, void *src) {\n    *(uint16_t *)dest \u003d *(uint16_t *) src;\n}\n\nvoid copy16_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint16_t, dest, LOAD_UNALIGNED_INT(uint16_t, src));\n}\n\nvoid copy32_aligned(void *dest, void *src) {\n    *(uint32_t *)dest \u003d *(uint32_t *) src;\n}\n\nvoid copy32_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint32_t, dest, LOAD_UNALIGNED_INT(uint32_t, src));\n}\n\nvoid copy64_aligned(void *dest, void *src) {\n    *(uint64_t *)dest \u003d *(uint64_t *) src;\n}\n\nvoid copy64_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint64_t, dest, LOAD_UNALIGNED_INT(uint64_t, src));\n}\n\nThe resulting assembler (gcc 12.2.0 in -O2) between aligned and\nunaligned:\n\n- x86-32: unchanged.\n- x86-64: unchanged.\n- powerpc32: unchanged.\n- powerpc64: unchanged.\n- arm32: 16 and 32-bit copy: unchanged. Added code for 64-bit unaligned copy.\n- aarch64: unchanged.\n- mips32: added code for unaligned.\n- mips64: added code for unaligned.\n- riscv: added code for unaligned.\n\nIf we want to improve the situation on mips and riscv, this would\nrequire introducing a new \"lttng_inline_integer_copy\" and expose\nadditional ring buffer client APIs in addition to event_write() which\ntake integers as inputs. Let\u0027s not introduce that complexity yet until\nit is justified.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nChange-Id: I1e6471d4607ac6aff89f16ef24d5370e804b7612\n","web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d06edf3c5b1697e9724b1362ac89447b7d4928e87"}],"resolve_conflicts_web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d06edf3c5b1697e9724b1362ac89447b7d4928e87"}]},"branch":"refs/heads/master"},"7670fe5d3f8877e324aea77cfd8bea8e72ced950":{"kind":"REWORK","_number":2,"created":"2023-02-06 16:33:28.000000000","uploader":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"ref":"refs/changes/13/9413/2","fetch":{"anonymous http":{"url":"https://review.lttng.org/lttng-ust","ref":"refs/changes/13/9413/2","commands":{"Branch":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/2 \u0026\u0026 git checkout -b change-9413 FETCH_HEAD","Checkout":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.lttng.org/lttng-ust refs/changes/13/9413/2","Reset To":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9c96e34c54f6e2beda872953c4d5955967c9fef4","subject":"ust-ctl: allow runtime version checks","web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d9c96e34c54f6e2beda872953c4d5955967c9fef4"}]}],"author":{"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","date":"2023-02-02 15:25:57.000000000","tz":-300},"committer":{"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","date":"2023-02-06 16:33:58.000000000","tz":-300},"subject":"Fix: use unaligned pointer accesses for lttng_inline_memcpy","message":"Fix: use unaligned pointer accesses for lttng_inline_memcpy\n\nlttng_inline_memcpy receives pointers which can be unaligned. This\ncauses issues (traps) specifically on arm 32-bit with 8-byte strings\n(including \\0).\n\nUse unaligned pointer accesses for loads/stores within\nlttng_inline_memcpy instead.\n\nThere is an impact on code generation on some architectures.  Using the\nfollowing test code on godbolt.org:\n\nvoid copy16_aligned(void *dest, void *src) {\n    *(uint16_t *)dest \u003d *(uint16_t *) src;\n}\n\nvoid copy16_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint16_t, dest, LOAD_UNALIGNED_INT(uint16_t, src));\n}\n\nvoid copy32_aligned(void *dest, void *src) {\n    *(uint32_t *)dest \u003d *(uint32_t *) src;\n}\n\nvoid copy32_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint32_t, dest, LOAD_UNALIGNED_INT(uint32_t, src));\n}\n\nvoid copy64_aligned(void *dest, void *src) {\n    *(uint64_t *)dest \u003d *(uint64_t *) src;\n}\n\nvoid copy64_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint64_t, dest, LOAD_UNALIGNED_INT(uint64_t, src));\n}\n\nThe resulting assembler (gcc 12.2.0 in -O2) between aligned and\nunaligned:\n\n- x86-32: unchanged.\n- x86-64: unchanged.\n- powerpc32: unchanged.\n- powerpc64: unchanged.\n- arm32: 16 and 32-bit copy: unchanged. Added code for 64-bit unaligned copy.\n- aarch64: unchanged.\n- mips32: added code for unaligned.\n- mips64: added code for unaligned.\n- riscv: added code for unaligned.\n\nIf we want to improve the situation on mips and riscv, this would\nrequire introducing a new \"lttng_inline_integer_copy\" and expose\nadditional ring buffer client APIs in addition to event_write() which\ntake integers as inputs. Let\u0027s not introduce that complexity yet until\nit is justified.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nChange-Id: I1e6471d4607ac6aff89f16ef24d5370e804b7612\n","web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d7670fe5d3f8877e324aea77cfd8bea8e72ced950"}],"resolve_conflicts_web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d7670fe5d3f8877e324aea77cfd8bea8e72ced950"}]},"branch":"refs/heads/master"},"7fdb690ce0a7187b23f439d569ddd629a702871f":{"kind":"NO_CHANGE","_number":3,"created":"2023-02-06 16:39:11.000000000","uploader":{"_account_id":1000009,"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","username":"compudj","avatars":[{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/7326b3e1d32b971a5e69d9730228c428.jpg?d\u003dretro\u0026r\u003dr\u0026s\u003d120","height":120}]},"ref":"refs/changes/13/9413/3","fetch":{"anonymous http":{"url":"https://review.lttng.org/lttng-ust","ref":"refs/changes/13/9413/3","commands":{"Branch":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/3 \u0026\u0026 git checkout -b change-9413 FETCH_HEAD","Checkout":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.lttng.org/lttng-ust refs/changes/13/9413/3","Reset To":"git fetch https://review.lttng.org/lttng-ust refs/changes/13/9413/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9c96e34c54f6e2beda872953c4d5955967c9fef4","subject":"ust-ctl: allow runtime version checks","web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d9c96e34c54f6e2beda872953c4d5955967c9fef4"}]}],"author":{"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","date":"2023-02-02 15:25:57.000000000","tz":-300},"committer":{"name":"Mathieu Desnoyers","email":"mathieu.desnoyers@efficios.com","date":"2023-02-06 16:35:33.000000000","tz":-300},"subject":"Fix: use unaligned pointer accesses for lttng_inline_memcpy","message":"Fix: use unaligned pointer accesses for lttng_inline_memcpy\n\nlttng_inline_memcpy receives pointers which can be unaligned. This\ncauses issues (traps) specifically on arm 32-bit with 8-byte strings\n(including \\0).\n\nUse unaligned pointer accesses for loads/stores within\nlttng_inline_memcpy instead.\n\nThere is an impact on code generation on some architectures.  Using the\nfollowing test code on godbolt.org:\n\nvoid copy16_aligned(void *dest, void *src) {\n    *(uint16_t *)dest \u003d *(uint16_t *) src;\n}\n\nvoid copy16_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint16_t, dest, LOAD_UNALIGNED_INT(uint16_t, src));\n}\n\nvoid copy32_aligned(void *dest, void *src) {\n    *(uint32_t *)dest \u003d *(uint32_t *) src;\n}\n\nvoid copy32_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint32_t, dest, LOAD_UNALIGNED_INT(uint32_t, src));\n}\n\nvoid copy64_aligned(void *dest, void *src) {\n    *(uint64_t *)dest \u003d *(uint64_t *) src;\n}\n\nvoid copy64_unaligned(void *dest, void *src) {\n    STORE_UNALIGNED_INT(uint64_t, dest, LOAD_UNALIGNED_INT(uint64_t, src));\n}\n\nThe resulting assembler (gcc 12.2.0 in -O2) between aligned and\nunaligned:\n\n- x86-32: unchanged.\n- x86-64: unchanged.\n- powerpc32: unchanged.\n- powerpc64: unchanged.\n- arm32: 16 and 32-bit copy: unchanged. Added code for 64-bit unaligned copy.\n- aarch64: unchanged.\n- mips32: added code for unaligned.\n- mips64: added code for unaligned.\n- riscv: added code for unaligned.\n\nIf we want to improve the situation on mips and riscv, this would\nrequire introducing a new \"lttng_inline_integer_copy\" and expose\nadditional ring buffer client APIs in addition to event_write() which\ntake integers as inputs. Let\u0027s not introduce that complexity yet until\nit is justified.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nChange-Id: I1e6471d4607ac6aff89f16ef24d5370e804b7612\n","web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d7fdb690ce0a7187b23f439d569ddd629a702871f"}],"resolve_conflicts_web_links":[{"name":"gitweb","tooltip":"Open in GitWeb","url":"/gitweb?p\u003dlttng-ust.git;a\u003dcommit;h\u003d7fdb690ce0a7187b23f439d569ddd629a702871f"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
