~ubuntu-branches/ubuntu/wily/clamav/wily-proposed

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/include/llvm/SymbolTableListTraits.h

  • Committer: Package Import Robot
  • Author(s): Scott Kitterman, Sebastian Andrzej Siewior, Andreas Cadhalpun, Scott Kitterman, Javier Fernández-Sanguino
  • Date: 2015-01-28 00:25:13 UTC
  • mfrom: (0.48.14 sid)
  • Revision ID: package-import@ubuntu.com-20150128002513-lil2oi74cooy4lzr
Tags: 0.98.6+dfsg-1
[ Sebastian Andrzej Siewior ]
* update "fix-ssize_t-size_t-off_t-printf-modifier", include of misc.h was
  missing but was pulled in via the systemd patch.
* Don't leak return codes from libmspack to clamav API. (Closes: #774686).

[ Andreas Cadhalpun ]
* Add patch to avoid emitting incremental progress messages when not
  outputting to a terminal. (Closes: #767350)
* Update lintian-overrides for unused-file-paragraph-in-dep5-copyright.
* clamav-base.postinst: always chown /var/log/clamav and /var/lib/clamav
  to clamav:clamav, not only on fresh installations. (Closes: #775400)
* Adapt the clamav-daemon and clamav-freshclam logrotate scripts,
  so that they correctly work under systemd.
* Move the PidFile variable from the clamd/freshclam configuration files
  to the init scripts. This makes the init scripts more robust against
  misconfiguration and avoids error messages with systemd. (Closes: #767353)
* debian/copyright: drop files from Files-Excluded only present in github
  tarballs
* Drop Workaround-a-bug-in-libc-on-Hurd.patch, because hurd got fixed.
  (see #752237)
* debian/rules: Remove useless --with-system-tommath --without-included-ltdl
  configure options.

[ Scott Kitterman ]
* Stop stripping llvm when repacking the tarball as the system llvm on some
  releases is too old to use
* New upstream bugfix release
  - Library shared object revisions.
  - Includes a patch from Sebastian Andrzej Siewior making ClamAV pid files
    compatible with systemd.
  - Fix a heap out of bounds condition with crafted Yoda's crypter files.
    This issue was discovered by Felix Groebert of the Google Security Team.
  - Fix a heap out of bounds condition with crafted mew packer files. This
    issue was discovered by Felix Groebert of the Google Security Team.
  - Fix a heap out of bounds condition with crafted upx packer files. This
    issue was discovered by Kevin Szkudlapski of Quarkslab.
  - Fix a heap out of bounds condition with crafted upack packer files. This
    issue was discovered by Sebastian Andrzej Siewior. CVE-2014-9328.
  - Compensate a crash due to incorrect compiler optimization when handling
    crafted petite packer files. This issue was discovered by Sebastian
    Andrzej Siewior.
* Update lintian override for embedded zlib to match new so version

[ Javier Fernández-Sanguino ]
* Updated Spanish Debconf template translation (Closes: #773563)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//===-- llvm/SymbolTableListTraits.h - Traits for iplist --------*- C++ -*-===//
 
2
//
 
3
//                     The LLVM Compiler Infrastructure
 
4
//
 
5
// This file is distributed under the University of Illinois Open Source
 
6
// License. See LICENSE.TXT for details.
 
7
//
 
8
//===----------------------------------------------------------------------===//
 
9
//
 
10
// This file defines a generic class that is used to implement the automatic
 
11
// symbol table manipulation that occurs when you put (for example) a named
 
12
// instruction into a basic block.
 
13
//
 
14
// The way that this is implemented is by using a special traits class with the
 
15
// intrusive list that makes up the list of instructions in a basic block.  When
 
16
// a new element is added to the list of instructions, the traits class is
 
17
// notified, allowing the symbol table to be updated.
 
18
//
 
19
// This generic class implements the traits class.  It must be generic so that
 
20
// it can work for all uses it, which include lists of instructions, basic
 
21
// blocks, arguments, functions, global variables, etc...
 
22
//
 
23
//===----------------------------------------------------------------------===//
 
24
 
 
25
#ifndef LLVM_SYMBOLTABLELISTTRAITS_H
 
26
#define LLVM_SYMBOLTABLELISTTRAITS_H
 
27
 
 
28
#include "llvm/ADT/ilist.h"
 
29
 
 
30
namespace llvm {
 
31
class ValueSymbolTable;
 
32
  
 
33
template<typename NodeTy> class ilist_iterator;
 
34
template<typename NodeTy, typename Traits> class iplist;
 
35
template<typename Ty> struct ilist_traits;
 
36
 
 
37
// ValueSubClass   - The type of objects that I hold, e.g. Instruction.
 
38
// ItemParentClass - The type of object that owns the list, e.g. BasicBlock.
 
39
//
 
40
template<typename ValueSubClass, typename ItemParentClass>
 
41
class SymbolTableListTraits : public ilist_default_traits<ValueSubClass> {
 
42
  typedef ilist_traits<ValueSubClass> TraitsClass;
 
43
public:
 
44
  SymbolTableListTraits() {}
 
45
 
 
46
  /// getListOwner - Return the object that owns this list.  If this is a list
 
47
  /// of instructions, it returns the BasicBlock that owns them.
 
48
  ItemParentClass *getListOwner() {
 
49
    typedef iplist<ValueSubClass> ItemParentClass::*Sublist;
 
50
    size_t Offset(size_t(&((ItemParentClass*)0->*ItemParentClass::
 
51
                           getSublistAccess(static_cast<ValueSubClass*>(0)))));
 
52
    iplist<ValueSubClass>* Anchor(static_cast<iplist<ValueSubClass>*>(this));
 
53
    return reinterpret_cast<ItemParentClass*>(reinterpret_cast<char*>(Anchor)-
 
54
                                              Offset);
 
55
  }
 
56
 
 
57
  static iplist<ValueSubClass> &getList(ItemParentClass *Par) {
 
58
    return Par->*(Par->getSublistAccess((ValueSubClass*)0));
 
59
  }
 
60
 
 
61
  static ValueSymbolTable *getSymTab(ItemParentClass *Par) {
 
62
    return Par ? toPtr(Par->getValueSymbolTable()) : 0;
 
63
  }
 
64
 
 
65
  void addNodeToList(ValueSubClass *V);
 
66
  void removeNodeFromList(ValueSubClass *V);
 
67
  void transferNodesFromList(ilist_traits<ValueSubClass> &L2,
 
68
                             ilist_iterator<ValueSubClass> first,
 
69
                             ilist_iterator<ValueSubClass> last);
 
70
//private:
 
71
  template<typename TPtr>
 
72
  void setSymTabObject(TPtr *, TPtr);
 
73
  static ValueSymbolTable *toPtr(ValueSymbolTable *P) { return P; }
 
74
  static ValueSymbolTable *toPtr(ValueSymbolTable &R) { return &R; }
 
75
};
 
76
 
 
77
} // End llvm namespace
 
78
 
 
79
#endif