#include "interr.h"
#include "thread.h"
+#include "validate.h"
+#include "gc-internal.h"
+
unsigned char build_id[] =
#include "../../output/build-id.tmp"
;
if (len != 0) {
os_vm_address_t real_addr;
FSHOW((stderr, "/mapping %ld(0x%lx) bytes at 0x%lx\n",
- (long)len, (long)len, addr));
+ (long)len, (long)len, (unsigned long)addr));
real_addr = os_map(fd, offset, addr, len);
if (real_addr != addr) {
lose("file mapped in wrong place! "
}
}
- FSHOW((stderr, "/space id = %d, free pointer = 0x%08x\n",
- id, (long)free_pointer));
+ FSHOW((stderr, "/space id = %ld, free pointer = 0x%lx\n",
+ id, (unsigned long)free_pointer));
switch (id) {
case DYNAMIC_CORE_SPACE_ID:
FSHOW((stderr, "build_id[]=\"%s\"\n", build_id));
FSHOW((stderr, "remaining_len = %d\n", remaining_len));
- if (remaining_len != strlen(build_id))
+ if (remaining_len != strlen((const char *)build_id))
goto losing_build_id;
for (i = 0; i < remaining_len; ++i) {
FSHOW((stderr, "ptr[%d] = char = %d, expected=%d\n",
initial_function = (lispobj)*ptr;
break;
+#ifdef LISP_FEATURE_GENCGC
+ case PAGE_TABLE_CORE_ENTRY_TYPE_CODE:
+ {
+ size_t size = *ptr;
+ size_t fdoffset = (*(ptr+1) + 1) * (os_vm_page_size);
+ size_t offset = 0;
+ long bytes_read;
+ long data[4096];
+ lseek(fd, fdoffset, SEEK_SET);
+ while ((bytes_read = read(fd, data, (size < 4096 ? size : 4096 )))
+ > 0)
+ {
+ int i = 0;
+ size -= bytes_read;
+ while (bytes_read) {
+ bytes_read -= sizeof(long);
+ page_table[offset++].first_object_offset = data[i++];
+ }
+ }
+
+ gencgc_partial_pickup = 1;
+ break;
+ }
+#endif
default:
lose("unknown core file entry: %ld", (long)val);
}
ptr += remaining_len;
- FSHOW((stderr, "/new ptr=%x\n", ptr));
+ FSHOW((stderr, "/new ptr=%lx\n", (unsigned long)ptr));
}
SHOW("about to free(header)");
free(header);