HomePhabricator

[llvm-objcopy] If input=output, preserve umask bits, otherwise drop…

Authored by MaskRay on Feb 24 2021, 11:10 AM.

Description

[llvm-objcopy] If input=output, preserve umask bits, otherwise drop S_ISUID/S_ISGID bits

This makes the behavior similar to cp

chmod u+s,g+s,o+x a
sudo llvm-strip a -o b
// With this patch, b drops set-user-ID and set-group-ID bits.
// sudo cp a b => b does not have set-user-ID or set-group-ID bits.

This also changes the behavior for the following case:

chmod u+s,g+s,o+x a
llvm-strip a
// a preserves set-user-ID and set-group-ID bits.
// This matches binutils<2.36 and probably >=2.37.  2.36 and 2.36.1 have some compatibility issues.

Differential Revision: https://reviews.llvm.org/D97253