~ubuntu-branches/ubuntu/trusty/erlang/trusty

« back to all changes in this revision

Viewing changes to erts/emulator/beam/external.h

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum
  • Date: 2011-05-05 15:48:43 UTC
  • mfrom: (3.5.13 sid)
  • Revision ID: james.westby@ubuntu.com-20110505154843-0om6ekzg6m7ugj27
Tags: 1:14.b.2-dfsg-3ubuntu1
* Merge from debian unstable.  Remaining changes:
  - Drop libwxgtk2.8-dev build dependency. Wx isn't in main, and not
    supposed to.
  - Drop erlang-wx binary.
  - Drop erlang-wx dependency from -megaco, -common-test, and -reltool, they
    do not really need wx. Also drop it from -debugger; the GUI needs wx,
    but it apparently has CLI bits as well, and is also needed by -megaco,
    so let's keep the package for now.
  - debian/patches/series: Do what I meant, and enable build-options.patch
    instead.
* Additional changes:
  - Drop erlang-wx from -et
* Dropped Changes:
  - patches/pcre-crash.patch: CVE-2008-2371: outer level option with
    alternatives caused crash. (Applied Upstream)
  - fix for ssl certificate verification in newSSL: 
    ssl_cacertfile_fix.patch (Applied Upstream)
  - debian/patches/series: Enable native.patch again, to get stripped beam
    files and reduce the package size again. (build-options is what
    actually accomplished this)
  - Remove build-options.patch on advice from upstream and because it caused
    odd build failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 * %CopyrightBegin%
3
 
 * 
4
 
 * Copyright Ericsson AB 1996-2009. All Rights Reserved.
5
 
 * 
 
3
 *
 
4
 * Copyright Ericsson AB 1996-2010. All Rights Reserved.
 
5
 *
6
6
 * The contents of this file are subject to the Erlang Public License,
7
7
 * Version 1.1, (the "License"); you may not use this file except in
8
8
 * compliance with the License. You should have received a copy of the
9
9
 * Erlang Public License along with this software. If not, it can be
10
10
 * retrieved online at http://www.erlang.org/.
11
 
 * 
 
11
 *
12
12
 * Software distributed under the License is distributed on an "AS IS"
13
13
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
14
14
 * the License for the specific language governing rights and limitations
15
15
 * under the License.
16
 
 * 
 
16
 *
17
17
 * %CopyrightEnd%
18
18
 */
19
19
 
54
54
 
55
55
#define DIST_HEADER       'D'
56
56
#define ATOM_CACHE_REF    'R'
 
57
#define ATOM_INTERNAL_REF2 'I'
 
58
#define ATOM_INTERNAL_REF3 'K'
 
59
#define BINARY_INTERNAL_REF 'J'
 
60
#define BIT_BINARY_INTERNAL_REF 'L'
57
61
#define COMPRESSED        'P'
58
62
 
59
63
#if 0
98
102
    Eterm atom[ERTS_ATOM_CACHE_SIZE];
99
103
} ErtsAtomTranslationTable;
100
104
 
101
 
#define ERTS_DIST_EXT_DFLAG_HDR (((Uint32) 1) << 31)
102
 
#define ERTS_DIST_EXT_ATOM_TRANS_TAB (((Uint32) 1) << 30)
103
 
#define ERTS_DIST_EXT_CON_ID_MASK ((Uint32) 0x3fffffff)
 
105
/*
 
106
 * These flags are tagged onto the high bits of a connection ID and stored in
 
107
 * the ErtsDistExternal structure's flags field.  They are used to indicate
 
108
 * various bits of state necessary to decode binaries in a variety of
 
109
 * scenarios. The mask ERTS_DIST_EXT_CON_ID_MASK is used later to separate the
 
110
 * connection ID from the flags. Be careful to ensure that the mask does not
 
111
 * overlap any of the bits used for flags, or ERTS will leak flags bits into
 
112
 * connection IDs and leak connection ID bits into the flags.
 
113
 */
 
114
#define ERTS_DIST_EXT_DFLAG_HDR      ((Uint32) 0x80000000)
 
115
#define ERTS_DIST_EXT_ATOM_TRANS_TAB ((Uint32) 0x40000000)
 
116
#define ERTS_DIST_EXT_BTT_SAFE       ((Uint32) 0x20000000)
 
117
#define ERTS_DIST_EXT_CON_ID_MASK    ((Uint32) 0x1fffffff)
104
118
 
105
119
#define ERTS_DIST_EXT_CON_ID(DIST_EXTP) \
106
120
  ((DIST_EXTP)->flags & ERTS_DIST_EXT_CON_ID_MASK)
146
160
void erts_encode_dist_ext(Eterm, byte **, Uint32, ErtsAtomCacheMap *);
147
161
 
148
162
Uint erts_encode_ext_size(Eterm);
 
163
Uint erts_encode_ext_size_ets(Eterm);
149
164
void erts_encode_ext(Eterm, byte **);
 
165
byte* erts_encode_ext_ets(Eterm, byte *, struct erl_off_heap_header** ext_off_heap);
150
166
 
151
167
#ifdef ERTS_WANT_EXTERNAL_TAGS
152
168
ERTS_GLB_INLINE void erts_peek_dist_header(ErtsDistHeaderPeek *, byte *, Uint);
162
178
Eterm erts_decode_dist_ext(Eterm **, ErlOffHeap *, ErtsDistExternal *);
163
179
 
164
180
Sint erts_decode_ext_size(byte*, Uint, int);
 
181
Sint erts_decode_ext_size_ets(byte*, Uint);
165
182
Eterm erts_decode_ext(Eterm **, ErlOffHeap *, byte**);
 
183
Eterm erts_decode_ext_ets(Eterm **, ErlOffHeap *, byte*);
166
184
 
167
185
Eterm erts_term_to_binary(Process* p, Eterm Term, int level, Uint flags);
168
186
 
201
219
erts_dist_ext_trailer(ErtsDistExternal *edep)
202
220
{
203
221
    void *res = (void *) (edep->ext_endp
204
 
                          + ERTS_WORD_ALIGN_PAD_SZ(edep->ext_endp));
205
 
    ASSERT((((Uint) res) % sizeof(Uint)) == 0);
 
222
                          + ERTS_EXTRA_DATA_ALIGN_SZ(edep->ext_endp));
 
223
    ASSERT((((UWord) res) % sizeof(Uint)) == 0);
206
224
    return res;
207
225
}
208
226