[PATCH] D101122: introduce flag -fsanitize-address-detect-stack-use-after-return-mode. No functional change.

Vitaly Buka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 28 10:51:49 PDT 2021


vitalybuka added inline comments.


================
Comment at: clang/include/clang/Basic/CodeGenOptions.def:225-228
+ENUM_CODEGENOPT(SanitizeAddressDetectStackUseAfterReturnMode,
+                llvm::AsanDetectStackUseAfterReturnMode, 2,
+                llvm::AsanDetectStackUseAfterReturnMode::Runtime
+                ) ///< Set detection mode for stack-use-after-return.
----------------
delcypher wrote:
> vitalybuka wrote:
> > vitalybuka wrote:
> > > Mode->Kind to be consistent with the file
> > I believe for consistency we need:
> > 1. Var name (SanitizeAddressDetectStackUseAfterReturn) no Mode/Kind suffix
> > 2. Enum type AsanDetectStackUseAfterReturnKind uses "kind"
> > 3. Actual flag includes no "kind" -fsanitize-address-detect-stack-use-after-return=
> > 
> > BTW. @delcypher  -fsanitize-address-destructor-kind was not consistent with the rest of file, but I am not sure it's worth of fixing now.
> > 
> > 
> @vitalybuka It's not too late to fix this because the `-fsanitize-address-destructor-kind=` flag hasn't been adopted yet AFAIK.
> 
> Am I right in understanding that what I landed doesn't match points 1 and 3 above? If you can confirm that's what you'd like to be changed I can put up some patches to fix this.
Correct
I'd expect 

```
ENUM_CODEGENOPT(SanitizeAddressDtor, llvm::AsanDtorKind, 2,
                llvm::AsanDtorKind::Global)
```

and 

```
def sanitize_address_destructor_EQ
    : Joined<["-"], "fsanitize-address-destructor=">,
      MetaVarName<"<kind>">,
      Flags<[CC1Option]>,
      HelpText<"Set destructor type used in ASan instrumentation">,
      Group<f_clang_Group>,
      Values<"none,global">,
      NormalizedValuesScope<"llvm::AsanDtorKind">,
      NormalizedValues<["None", "Global"]>,
      MarshallingInfoEnum<CodeGenOpts<"SanitizeAddressDtor">, "Global">;
```

And one more thing, probably not very important, and matter of personal preferences.
Maybe we don't need MetaVarName<"<kind>"> for both of these flags.
Without MetaVarName documentation is going to be -fsanitize-address-destructor=<arg> 
MetaVarName just lets use to replace <arg> with more common and specific <file>, <dir>.. etc.
To me <kind> is almost generic as <arg>, so why not to stick to default.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D101122/new/

https://reviews.llvm.org/D101122



More information about the llvm-commits mailing list