Use 'extern uint8_t' instead of 'extern void' for external symbols.
The beri boot loaders depend on symbols defined in linker scripts or assembly files. The boot loaders do not care about the type of these symbols but just want to extract a pointer to them. Older versions of GCC permitted external symbols to be declared of type 'void' and then '&foo' generated a void pointer to the memory at the symbol's address. However, void objects are not valid C and newer versions of GCC error if these are used. Instead, declare these symbols as being bytes (or an array of bytes in the cheri_sdcard_vaddr case). Sponsored by: DARPA / AFRL
This commit is contained in:
parent
a9ca11cb39
commit
48ccf80238
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=327524
@ -109,10 +109,10 @@
|
||||
ALTERA_SDCARD_RR1_COMMANDCRCFAILED | ALTERA_SDCARD_RR1_ADDRESSMISALIGNED |\
|
||||
ALTERA_SDCARD_RR1_ADDRBLOCKRANGE)
|
||||
|
||||
extern void __cheri_sdcard_vaddr__;
|
||||
extern uint8_t __cheri_sdcard_vaddr__[];
|
||||
|
||||
#define ALTERA_SDCARD_PTR(type, offset) \
|
||||
(volatile type *)((uint8_t *)&__cheri_sdcard_vaddr__ + (offset))
|
||||
(volatile type *)(&__cheri_sdcard_vaddr__[(offset)])
|
||||
|
||||
static __inline uint16_t
|
||||
altera_sdcard_read_uint16(u_int offset)
|
||||
|
@ -78,8 +78,8 @@ struct console *consoles[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
extern void __bss_start, __bss_end;
|
||||
extern void __heap_start, __heap_end;
|
||||
extern uint8_t __bss_start, __bss_end;
|
||||
extern uint8_t __heap_start, __heap_end;
|
||||
|
||||
static int
|
||||
__elfN(exec)(struct preloaded_file *fp)
|
||||
@ -108,14 +108,14 @@ main(int argc, char *argv[], char *envv[], struct bootinfo *bootinfop)
|
||||
struct devsw **dp;
|
||||
|
||||
/* NB: Must be sure to bzero() before using any globals. */
|
||||
bzero(&__bss_start, (uintptr_t)&__bss_end - (uintptr_t)&__bss_start);
|
||||
bzero(&__bss_start, &__bss_end - &__bss_start);
|
||||
|
||||
boot2_argc = argc;
|
||||
boot2_argv = argv;
|
||||
boot2_envv = envv;
|
||||
boot2_bootinfo = *bootinfop; /* Copy rather than by reference. */
|
||||
|
||||
setheap((void *)&__heap_start, (void *)&__heap_end);
|
||||
setheap(&__heap_start, &__heap_end);
|
||||
|
||||
/*
|
||||
* Pick up console settings from boot2; probe console.
|
||||
|
Loading…
Reference in New Issue
Block a user