* For portability reasons change cle_addr from pointer type.

This commit is contained in:
bg- 2007-04-25 15:36:53 +00:00
parent f7908e332f
commit ffb90bfe40
3 changed files with 12 additions and 11 deletions

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)$Id: cle.h,v 1.2 2007/01/05 17:47:53 bg- Exp $
* @(#)$Id: cle.h,v 1.3 2007/04/25 15:36:53 bg- Exp $
*/
#ifndef CLE_H
@ -42,13 +42,13 @@ typedef u16_t cle_word;
typedef u16_t cle_half;
/* Also used for address arithmetic (can't be void *). */
typedef unsigned char *cle_addr;
/* typedef uintptr_t cle_addr; */
typedef uintptr_t cle_addr;
typedef unsigned char cle_scratch[32];
struct cle_info {
cle_addr text, data, bss;
cle_addr text;
void *data, *bss;
cle_off textrelaoff, datarelaoff;
cle_word textrelasize, datarelasize;
@ -76,7 +76,7 @@ int
cle_relocate(struct cle_info *info,
int (*read)(void *, int, off_t),
off_t hdr, /* Offset to start of file. */
cle_addr segmem, /* Where segment is stored in memory. */
void *segmem, /* Where segment is stored in memory. */
cle_off reloff, /* .rela.<segment> start */
cle_word relsize); /* .rela.<segment> size */
@ -93,6 +93,7 @@ cle_lookup(struct cle_info *info,
#define CLE_NO_TEXT 4
#define CLE_UNDEFINED 5
#define CLE_UNKNOWN_SEGMENT 6
#define CLE_UNKNOWN_RELOC 7
#define CLE_MULTIPLY_DEFINED 20

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)$Id: cmod.c,v 1.1 2007/01/05 18:01:06 bg- Exp $
* @(#)$Id: cmod.c,v 1.2 2007/04/25 15:37:41 bg- Exp $
*/
#include <stdio.h>
@ -90,18 +90,18 @@ cmod_load(unsigned imod,
*/
h.data = cmod_module[imod].ram;
h.bss = h.data + h.datasize;
h.text = h.bss + h.bsssize;
h.text = (cle_addr)h.bss + h.bsssize;
PRINTF("cmod: copy text segment to RAM %p %p\n",
h.text, h.text + h.textsize);
ret = pread(h.text, h.textsize, off + h.textoff);
ret = pread((void *)h.text, h.textsize, off + h.textoff);
assert(ret > 0);
if(h.textrelasize > 0) {
PRINTF("cmod: relocate text in RAM\n");
ret = cle_relocate(&h,
pread,
off,
h.text,
(void *)h.text,
h.textrelaoff, h.textrelasize);
if(ret != CLE_OK) {
strcpy(scratch, h.name);

View File

@ -26,14 +26,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)$Id: cmod.h,v 1.1 2007/01/05 18:00:55 bg- Exp $
* @(#)$Id: cmod.h,v 1.2 2007/04/25 15:38:00 bg- Exp $
*/
#ifndef CMOD_H
#define CMOD_H
struct cmod_info {
cle_addr ram;
void * ram;
/* cle_addr rom; */
void (*fini)(void);
};