1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/lib/Support/Unix
Jian Cai f73c5e8b40 [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
2021-02-12 18:01:43 -08:00
..
COM.inc
DynamicLibrary.inc
Host.inc Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Memory.inc Fix header includes after 0697bcb66f1d82f2fd447e9d13b74d141c3ce085 2020-01-24 18:32:54 -08:00
Path.inc [llvm-objcopy] preserve file ownership when overwritten by root 2021-02-12 18:01:43 -08:00
Process.inc Fix deprecated usage of mallinfo 2021-02-10 13:53:57 +08:00
Program.inc Support: Simplify __HAIKU__ #ifdef in llvm::sys::Wait, NFC 2021-01-28 12:28:12 -08:00
README.txt
Signals.inc [Signal] Re-raise SIGPIPE if the handler is uninstalled 2021-01-08 11:13:43 -08:00
Threading.inc Implement computeHostNumHardwareThreads() for FreeBSD 2020-11-29 00:49:39 +01:00
ThreadLocal.inc
Unix.h Stop including sys/param.h from Unix.h 2020-02-25 15:35:04 +01:00
Watchdog.inc

llvm/lib/Support/Unix README
===========================

This directory provides implementations of the lib/System classes that
are common to two or more variants of UNIX. For example, the directory
structure underneath this directory could look like this:

Unix           - only code that is truly generic to all UNIX platforms
  Posix        - code that is specific to Posix variants of UNIX
  SUS          - code that is specific to the Single Unix Specification
  SysV         - code that is specific to System V variants of UNIX

As a rule, only those directories actually needing to be created should be
created. Also, further subdirectories could be created to reflect versions of
the various standards. For example, under SUS there could be v1, v2, and v3
subdirectories to reflect the three major versions of SUS.