From: Stephane Glondu Date: Sun, 16 Aug 2015 20:59:14 +0200 Subject: Add a .file directive to generated .s files When no .file directive is given, the toolchain records the filename of the .o file, which is sometimes random, making generated objects non-deterministic. We use Location.input_name for adding .file directives to assembly files. Note: when the file is preprocessed, this reference holds the name of the temporary file. Hence, files compiled with -pp are still not deterministic. Bug-Debian: https://bugs.debian.org/795784 Bug-Debian: https://bugs.debian.org/796336 --- asmcomp/amd64/emit.mlp | 1 + asmcomp/arm/emit.mlp | 1 + asmcomp/arm64/emit.mlp | 1 + asmcomp/i386/emit.mlp | 1 + asmcomp/power/emit.mlp | 1 + asmcomp/sparc/emit.mlp | 1 + 6 files changed, 6 insertions(+) diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp index d56d0f5..4d7aa30 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -794,6 +794,7 @@ let data l = let begin_assembly() = reset_debug_info(); (* PR#5603 *) float_constants := []; + ` .file \"{emit_string (String.escaped !Location.input_name)}\"\n`; if !Clflags.dlcode then begin (* from amd64.S; could emit these constants on demand *) if macosx then diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp index 4948fb2..6f30fba 100644 --- a/asmcomp/arm/emit.mlp +++ b/asmcomp/arm/emit.mlp @@ -892,6 +892,7 @@ let data l = let begin_assembly() = reset_debug_info(); + ` .file \"{emit_string (String.escaped !Location.input_name)}\"\n`; ` .syntax unified\n`; begin match !arch with | ARMv4 -> ` .arch armv4t\n` diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp index 750c2b2..5afbb8a 100644 --- a/asmcomp/arm64/emit.mlp +++ b/asmcomp/arm64/emit.mlp @@ -942,6 +942,7 @@ let data l = let begin_assembly() = reset_debug_info(); + ` .file \"{emit_string (String.escaped !Location.input_name)}\"\n`; let lbl_begin = Compilenv.make_symbol (Some "data_begin") in ` .data\n`; ` .globl {emit_symbol lbl_begin}\n`; diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp index 98df5f9..531150f 100644 --- a/asmcomp/i386/emit.mlp +++ b/asmcomp/i386/emit.mlp @@ -986,6 +986,7 @@ let data l = let begin_assembly() = reset_debug_info(); (* PR#5603 *) float_constants := []; + ` .file \"{emit_string (String.escaped !Location.input_name)}\"\n`; let lbl_begin = Compilenv.make_symbol (Some "data_begin") in ` .data\n`; ` .globl {emit_symbol lbl_begin}\n`; diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp index 4344085..343132b 100644 --- a/asmcomp/power/emit.mlp +++ b/asmcomp/power/emit.mlp @@ -887,6 +887,7 @@ let data l = let begin_assembly() = defined_functions := StringSet.empty; external_functions := StringSet.empty; + ` .file \"{emit_string (String.escaped !Location.input_name)}\"\n`; (* Emit the beginning of the segments *) let lbl_begin = Compilenv.make_symbol (Some "data_begin") in emit_string data_space; diff --git a/asmcomp/sparc/emit.mlp b/asmcomp/sparc/emit.mlp index 877a3d5..7b041e9 100644 --- a/asmcomp/sparc/emit.mlp +++ b/asmcomp/sparc/emit.mlp @@ -727,6 +727,7 @@ let data l = (* Beginning / end of an assembly file *) let begin_assembly() = + ` .file \"{emit_string (String.escaped !Location.input_name)}\"\n`; let lbl_begin = Compilenv.make_symbol (Some "data_begin") in ` .data\n`; ` .global {emit_symbol lbl_begin}\n`; ...* gnu/build/accounts.scm (catch-ENOSYS): Remove. (database-writer): Use 'fsync' instead of 'fdatasync'. Ludovic Courtès 2019-06-05accounts: Call 'fdatasync' when writing databases....* gnu/build/accounts.scm (catch-ENOSYS): New macro. (database-writer): Call 'fdatasync'. Ludovic Courtès 2019-06-05accounts: Close database before renaming it....Fixes <https://bugs.gnu.org/35996>. Reported by Florian Pelz <pelzflorian@pelzflorian.de>. * gnu/build/accounts.scm (database-writer): Move 'close-port' call before 'rename-file'. Ludovic Courtès 2019-06-05activation: Lock /etc/.pwd.lock before accessing databases....Suggested by Florian Pelz <pelzflorian@pelzflorian.de> in <http://bugs.gnu.org/35996>. * gnu/build/accounts.scm (%password-lock-file): New variable. * gnu/build/activation.scm (activate-users+groups): Wrap calls to 'user+group-databases', 'write-group', etc. into 'with-file-lock'. Ludovic Courtès 2019-04-26accounts: Always honor the configured user account shell....Starting from commit 0ae735bcc8ff7fdc89d67b492bdee9091ee19e86, Guix System would preserve the user shell across reconfigure and reboot. This was done so as to allow for the use of 'chsh'. This proved to be a misguided decision. This commit goes back to considering user shells as config and not "state." * gnu/build/accounts.scm (allocate-passwd): Do not use shell from PREVIOUS. Ludovic Courtès 2019-03-07Add (gnu build accounts)....* gnu/build/accounts.scm, tests/accounts.scm: New files. * Makefile.am (SCM_TESTS): Add tests/accounts.scm. * gnu/local.mk (GNU_SYSTEM_MODULES): Add build/accounts.scm. Ludovic Courtès