aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorJian Cai <jiancai@google.com>2021-02-02 18:47:03 -0800
committerJian Cai <jiancai@google.com>2021-02-12 18:01:43 -0800
commitc2a84771bb63947695ea50b89160c02b36fb634d (patch)
treecef9522e99bd7058bf4e3e731a854dbe740e2d92 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent5631842d181016207e85e4d035d0c4383f34337a (diff)
downloadllvm-c2a84771bb63947695ea50b89160c02b36fb634d.zip
llvm-c2a84771bb63947695ea50b89160c02b36fb634d.tar.gz
llvm-c2a84771bb63947695ea50b89160c02b36fb634d.tar.bz2
[llvm-objcopy] preserve file ownership when overwritten by root
As of binutils 2.36, GNU strip calls chown(2) for "sudo strip foo" and "sudo strip foo -o foo", but no "sudo strip foo -o bar" or "sudo strip foo -o ./foo". In other words, while "sudo strip foo -o bar" creates a new file bar with root access, "sudo strip foo" will keep the owner and group of foo unchanged. Currently llvm-objcopy and llvm-strip behave differently, always changing the owner and gropu to root. The discrepancy prevents Chrome OS from migrating to llvm-objcopy and llvm-strip as they change file ownership and cause intended users/groups to lose access when invoked by sudo with the following sequence (recommended in man page of GNU strip). 1.<Link the executable as normal.> 1.<Copy "foo" to "foo.full"> 1.<Run "strip --strip-debug foo"> 1.<Run "objcopy --add-gnu-debuglink=foo.full foo"> This patch makes llvm-objcopy and llvm-strip follow GNU's behavior. Link: crbug.com/1108880
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions