File: lx.h

package info (click to toggle)
lnpd 0.9.0-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 1,748 kB
  • ctags: 495
  • sloc: sh: 10,597; ansic: 2,522; makefile: 103
file content (57 lines) | stat: -rw-r--r-- 2,068 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*! \file   lx.h
    \brief  brickOS executable file support
    \author Markus L. Noga <markus@noga.de>
*/

/*
 *  The contents of this file are subject to the Mozilla Public License
 *  Version 1.0 (the "License"); you may not use this file except in
 *  compliance with the License. You may obtain a copy of the License at
 *  http://www.mozilla.org/MPL/
 *
 *  Software distributed under the License is distributed on an "AS IS"
 *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 *  License for the specific language governing rights and limitations
 *  under the License.
 *
 *  The Original Code is legOS code, released October 2, 1999.
 *
 *  The Initial Developer of the Original Code is Markus L. Noga.
 *  Portions created by Markus L. Noga are Copyright (C) 1999
 *  Markus L. Noga. All Rights Reserved.
 *
 *  Contributor(s): everyone discussing LNP at LUGNET
 */
 
#ifndef __lx_h__
#define __lx_h__

#define HEADER_FIELDS 8       //!< number of header fields stored on disk

typedef struct {
  unsigned short version;     //!< version number
  unsigned short base;        //!< current text segment base address
  unsigned short text_size;   //!< size of read-only segment 
  unsigned short data_size;   //!< size of initialized data segment
  unsigned short bss_size;    //!< size of uninitialized data segment
  unsigned short stack_size;  //!< stack size
  unsigned short offset;      //!< start offset from text
  unsigned short num_relocs;  //!< number of relocations.
  
  unsigned char  *text;       //!< program text (not stored on disk)
  unsigned short *reloc;      //!< relocations (not stored on disk)
} lx_t;       	      	      //!< the brickOS executable type



//! write a brickOS exectutable to a file
int lx_write(const lx_t *lx,const unsigned char *filename);

//! read a brickOS executable from a file
int lx_read(lx_t *lx,const unsigned char *filename);

//! relocate a brickOS executable to a new base address (may be called repeatedly).
void lx_relocate(lx_t *lx,unsigned short base);

#endif // __lx_h__