[all-commits] [llvm/llvm-project] b07427: [llvm-ar][mri] Ensure CREATE commands overwrite th...

bd1976bris via All-commits all-commits at lists.llvm.org
Fri May 13 15:50:31 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b074275067be3f6b10ef2f8bada21c2ec7b90f2e
      https://github.com/llvm/llvm-project/commit/b074275067be3f6b10ef2f8bada21c2ec7b90f2e
  Author: Ben Dunbobbin <Ben.Dunbobbin at sony.com>
  Date:   2022-05-13 (Fri, 13 May 2022)

  Changed paths:
    A llvm/test/tools/llvm-ar/mri-create-overwrite.test
    M llvm/tools/llvm-ar/llvm-ar.cpp

  Log Message:
  -----------
  [llvm-ar][mri] Ensure CREATE commands overwrite the output file

The CREATE/CREATETHIN commands should overwrite the output file:
https://sourceware.org/binutils/docs/binutils/ar-scripts.html.

This fixes a regression for MRI scripts introduced in:
https://reviews.llvm.org/D123142 which put logic into
performWriteOperation. performWriteOperation is called for all MRI
commands that write an archive out (one's with a SAVE command).
performWriteOperation is unaware of MRI semantics and loads an
existing archive if present. If an existing archive is loaded, llvm-ar
checks the properties of the existing archive for decisions about the
output archive (for example making the output archive thin if the
existing one was). https://reviews.llvm.org/D123142 adds the following
logic...

if (OldArchive) {
  if (Thin && !OldArchive->isThin())
    fail("cannot convert a regular archive to a thin one");
  if (OldArchive->isThin())
    Thin = true;
}

... which errors for a script with CREATETHIN in effect if there is an
existing regular archive, and causes CREATE to output a thin archive
if there is an existing thin archive.

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




More information about the All-commits mailing list