1. 09 9月, 2019 1 次提交
  2. 23 8月, 2019 3 次提交
  3. 20 8月, 2019 2 次提交
  4. 19 8月, 2019 1 次提交
  5. 17 8月, 2019 12 次提交
  6. 16 8月, 2019 2 次提交
    • P
      tests: virpcimock: Always declare __open_2 · 52dad8c9
      Peter Krempa 提交于
      In some cases e.g. with clang on fedora 30 __open2 isn't even declared
      which results in the following build error:
      
      /home/pipo/libvirt/tests/virpcimock.c:939:1: error: no previous prototype for function
            '__open_2' [-Werror,-Wmissing-prototypes]
      __open_2(const char *path, int flags)
      
      Add a separate declaration to appease the compiler.
      Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
      Reviewed-by: NErik Skultety <eskultet@redhat.com>
      52dad8c9
    • M
      virpcimock: Mock __open_2() · 459f071c
      Michal Privoznik 提交于
      Hold on to your hat, this is going to be a wild ride. As nearly
      nothing in glibc, nor open() is a real function. Just look into
      bits/fcntl2.h and you'll see that open() is actually a thin
      wrapper that calls either __open_alias() or __open_2(). Now,
      before 801ebb5e the open() done in
      virPCIDeviceConfigOpenInternal() had a constant oflags (we were
      opening the pci config with O_RDWR). And since we were not
      passing any mode nor O_CREAT the wrapper decided to call
      __open_alias() which was open() provided by our mock. So far so
      good. But after the referenced commit, the oflags is no longer
      compile time constant and therefore the wrapper calls __open_2()
      which we don't mock and thus the real __open_2() from glibc was
      called and thus we did try to open real path from host's /sys.
      This of course fails with variety of errors.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NErik Skultety <eskultet@redhat.com>
      Reviewed-by: NJán Tomko <jtomko@redhat.com>
      459f071c
  7. 17 6月, 2019 1 次提交
  8. 03 4月, 2019 1 次提交
    • D
      tests: fix mocking of stat() / lstat() functions · ff376c62
      Daniel P. Berrangé 提交于
      Quite a few of the tests have a need to mock the stat() / lstat()
      functions and they are taking somewhat different & inconsistent
      approaches none of which are actually fully correct. This is shown
      by fact that 'make check' fails on 32-bit hosts. Investigation
      revealed that the code was calling into the native C library impl,
      not getting intercepted by our mocks.
      
      The POSIX stat() function might resolve to any number of different
      symbols in the C library.
      
      The may be an additional stat64() function exposed by the headers
      too.
      
      On 64-bit hosts the stat & stat64 functions are identical, always
      refering to the 64-bit ABI.
      
      On 32-bit hosts they refer to the 32-bit & 64-bit ABIs respectively.
      
      Libvirt uses _FILE_OFFSET_BITS=64 on 32-bit hosts, which causes the
      C library to transparently rewrite stat() calls to be stat64() calls.
      Libvirt will never see the 32-bit ABI from the traditional stat()
      call. We cannot assume this rewriting is done using a macro. It might
      be, but on GLibC it is done with a magic __asm__ statement to apply
      the rewrite at link time instead of at preprocessing.
      
      In GLibC there may be two additional functions exposed by the headers,
      __xstat() and __xstat64(). When these exist, stat() and stat64() are
      transparently rewritten to call __xstat() and __xstat64() respectively.
      The former symbols will not actally exist in the library at all, only
      the header. The leading "__" indicates the symbols are a private impl
      detail of the C library that applications should not care about.
      Unfortunately, because we are trying to mock replace the C library,
      we need to know about this internal impl detail.
      
      With all this in mind the list of functions we have to mock will depend
      on several factors
      
       - If _FILE_OFFSET_BITS is set, then we are on a 32-bit host, and we
         only need to mock stat64 and __xstat64. The other stat / __xstat
         functions exist, but we'll never call them so they can be ignored
         for mocking.
      
       - If _FILE_OFFSET_BITS is not set, then we are on a 64-bit host and
         we should mock stat, stat64, __xstat & __xstat64. Either may be
         called by app code.
      
       - If __xstat & __xstat64 exist, then stat & stat64 will not exist
         as symbols in the library, so the latter should not be mocked.
      
      The same all applies to lstat()
      
      These rules are complex enough that we don't want to duplicate them
      across every mock file, so this centralizes all the logic in a helper
      file virmockstathelper.c that should be #included when needed. The
      code merely need to provide a filename rewriting callback called
      virMockStatRedirect(). Optionally VIR_MOCK_STAT_HOOK can be defined
      as a macro if further processing is needed inline.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      ff376c62
  9. 18 3月, 2019 1 次提交
  10. 14 12月, 2018 1 次提交
    • D
      Remove all Author(s): lines from source file headers · 60046283
      Daniel P. Berrangé 提交于
      In many files there are header comments that contain an Author:
      statement, supposedly reflecting who originally wrote the code.
      In a large collaborative project like libvirt, any non-trivial
      file will have been modified by a large number of different
      contributors. IOW, the Author: comments are quickly out of date,
      omitting people who have made significant contribitions.
      
      In some places Author: lines have been added despite the person
      merely being responsible for creating the file by moving existing
      code out of another file. IOW, the Author: lines give an incorrect
      record of authorship.
      
      With this all in mind, the comments are useless as a means to identify
      who to talk to about code in a particular file. Contributors will always
      be better off using 'git log' and 'git blame' if they need to  find the
      author of a particular bit of code.
      
      This commit thus deletes all Author: comments from the source and adds
      a rule to prevent them reappearing.
      
      The Copyright headers are similarly misleading and inaccurate, however,
      we cannot delete these as they have legal meaning, despite being largely
      inaccurate. In addition only the copyright holder is permitted to change
      their respective copyright statement.
      Reviewed-by: NErik Skultety <eskultet@redhat.com>
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      60046283
  11. 20 9月, 2018 2 次提交
  12. 04 5月, 2018 4 次提交
  13. 03 11月, 2017 1 次提交
    • A
      Remove backslash alignment attempts · 3e7db8d3
      Andrea Bolognani 提交于
      Right-aligning backslashes when defining macros or using complex
      commands in Makefiles looks cute, but as soon as any changes is
      required to the code you end up with either distractingly broken
      alignment or unnecessarily big diffs where most of the changes
      are just pushing all backslashes a few characters to one side.
      
      Generated using
      
        $ git grep -El '[[:blank:]][[:blank:]]\\$' | \
          grep -E '*\.([chx]|am|mk)$$' | \
          while read f; do \
            sed -Ei 's/[[:blank:]]*[[:blank:]]\\$/ \\/g' "$f"; \
          done
      Signed-off-by: NAndrea Bolognani <abologna@redhat.com>
      3e7db8d3
  14. 17 7月, 2017 1 次提交
  15. 15 7月, 2017 1 次提交
  16. 20 5月, 2016 1 次提交
  17. 14 5月, 2016 2 次提交
    • M
      virmock.h: Introduce VIR_MOCK_CALL_STAT · 86d1705a
      Michal Privoznik 提交于
      There is some magic going on when it comes to stat() or lstat().
      Basically, stat() can either be a regular function, an inline
      function that calls __xstat(_STAT_VER, ...) or a macro that does
      the same as the inline func. Don't ask why is that, just read the
      documentation in sys/stat.h and make sure you have a bucket next
      to you. Anyway, currently there will not be both stat and __xstat
      symbols at the same time, as one of them gets overwritten to the
      other one during compilation. But this is not true anymore once
      we start chaining our mocking libraries. Therefore we need a
      wrapper that calls desired function from glibc.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      86d1705a
    • M
      virpcimock: Adapt to virmock.h · 57c484db
      Michal Privoznik 提交于
      Instead of introducing our own wrapper for dlsym()
      we can use the one provided by virmock.h.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      57c484db
  18. 09 12月, 2015 3 次提交
    • A
      tests: Use more specific names for variables · d2939c0f
      Andrea Bolognani 提交于
      Instead of fakesysfsdir, which is very generic, use fakesysfspcidir and
      fakesysfscgroupdir. This makes it explicit what part of the fake sysfs
      filesystem they're referring to, and also leaves open the possibility of
      handling files in two unrelated parts of the fake sysfs filesystem.
      
      No functional changes.
      d2939c0f
    • A
      tests: Rename LIBVIRT_FAKE_SYSFS_DIR to LIBVIRT_FAKE_ROOT_DIR · 46468c62
      Andrea Bolognani 提交于
      The old name is no longer accurate, since now we're using its value as
      the root of the fake filesystem.
      
      No functional changes.
      46468c62
    • A
      tests: pcimock: Use the temporary directory as fake root · f94398e7
      Andrea Bolognani 提交于
      We might need to mock files living outside PCI_SYSFS_PREFIX later on,
      so it's better to treat the temporary directory we are passed via
      the environment as the root of the fake filesystem and create
      PCI_SYSFS_PREFIX inside it.
      
      The environment variable name will be changed to reflect the new use
      we're making of it in a later commit.
      f94398e7