Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[YSQL] Import 'pg_attribute_no_sanitize_alignment() macro' #7237

Closed
tedyu opened this issue Feb 12, 2021 · 0 comments
Closed

[YSQL] Import 'pg_attribute_no_sanitize_alignment() macro' #7237

tedyu opened this issue Feb 12, 2021 · 0 comments
Assignees

Comments

@tedyu
Copy link
Contributor

tedyu commented Feb 12, 2021

Upstream commit was 993bdb9f935a751935a03c80d30857150ba2b645

Modern gcc and clang compilers offer alignment sanitizers, which help to detect
pointer misalignment.  However, our codebase already contains x86-specific
crc32 computation code, which uses unalignment access.  Thankfully, those
compilers also support the attribute, which disables alignment sanitizers at
the function level.  This commit adds pg_attribute_no_sanitize_alignment(),
which wraps this attribute, and applies it to pg_comp_crc32c_sse42() function.
@tedyu tedyu self-assigned this Feb 12, 2021
tedyu added a commit that referenced this issue Feb 20, 2021
Summary:
Upstream commit was 993bdb9f935a751935a03c80d30857150ba2b645

The change in CMakeLists.txt is to avoid the following compilation warning:
```
/-------------------------------------------------------------------------------
| COMPILATION FAILED
|-------------------------------------------------------------------------------
src/postgres/src/port/pg_crc32c_sse42.c:24:1: error: 'no_sanitize' attribute directive ignored [-Werror=attributes]
 {
 ^
cc1: all warnings being treated as errors

Input files:
  build/debug-gcc-dynamic-ninja/postgres_build/src/port/pg_crc32c_sse42.c
```
Commit message was:
```
    Modern gcc and clang compilers offer alignment sanitizers, which help to detect
    pointer misalignment.  However, our codebase already contains x86-specific
    crc32 computation code, which uses unalignment access.  Thankfully, those
    compilers also support the attribute, which disables alignment sanitizers at
    the function level.  This commit adds pg_attribute_no_sanitize_alignment(),
    which wraps this attribute, and applies it to pg_comp_crc32c_sse42() function.

    Discussion: https://postgr.es/m/CAPpHfdsne3%3DT%3DfMNU45PtxdhSL_J2PjLTeS8rwKnJzUR4YNd4w%40mail.gmail.com
    Discussion: https://postgr.es/m/475514.1612745257%40sss.pgh.pa.us
    Author: Alexander Korotkov, revised by Tom Lane
    Reviewed-by: Tom Lane
```

Test Plan: Build Yugabyte DB and run test suite via Jenkins

Reviewers: mbautin

Reviewed By: mbautin

Subscribers: yql

Differential Revision: https://phabricator.dev.yugabyte.com/D10619
@tedyu tedyu closed this as completed Feb 25, 2021
polarweasel pushed a commit to lizayugabyte/yugabyte-db that referenced this issue Mar 9, 2021
…cro'

Summary:
Upstream commit was 993bdb9f935a751935a03c80d30857150ba2b645

The change in CMakeLists.txt is to avoid the following compilation warning:
```
/-------------------------------------------------------------------------------
| COMPILATION FAILED
|-------------------------------------------------------------------------------
src/postgres/src/port/pg_crc32c_sse42.c:24:1: error: 'no_sanitize' attribute directive ignored [-Werror=attributes]
 {
 ^
cc1: all warnings being treated as errors

Input files:
  build/debug-gcc-dynamic-ninja/postgres_build/src/port/pg_crc32c_sse42.c
```
Commit message was:
```
    Modern gcc and clang compilers offer alignment sanitizers, which help to detect
    pointer misalignment.  However, our codebase already contains x86-specific
    crc32 computation code, which uses unalignment access.  Thankfully, those
    compilers also support the attribute, which disables alignment sanitizers at
    the function level.  This commit adds pg_attribute_no_sanitize_alignment(),
    which wraps this attribute, and applies it to pg_comp_crc32c_sse42() function.

    Discussion: https://postgr.es/m/CAPpHfdsne3%3DT%3DfMNU45PtxdhSL_J2PjLTeS8rwKnJzUR4YNd4w%40mail.gmail.com
    Discussion: https://postgr.es/m/475514.1612745257%40sss.pgh.pa.us
    Author: Alexander Korotkov, revised by Tom Lane
    Reviewed-by: Tom Lane
```

Test Plan: Build Yugabyte DB and run test suite via Jenkins

Reviewers: mbautin

Reviewed By: mbautin

Subscribers: yql

Differential Revision: https://phabricator.dev.yugabyte.com/D10619
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant