
Ben Gamari
Sylvain Henry
writes: Hi devs,
I have made a patch to refactor the RTS linker, especially to drastically reduce its memory usage: https://phabricator.haskell.org/D1470
We need to test it on differrent OS/architectures before it can be merged. Here is the current state: - Linux/x86-64: OK (Harbormaster and I) - Solaris/x86-64: was OK, maybe needs to be retested (@kgardas) - OpenBSD/x86-64: was OK, maybe needs to be tetested (@kgardas) - Solaris/i386: was failing with unrelated error, needs to be retested (@kgardas) - Linux/PowerPC: OK (@erikd) - Linux/ARM: was failing with unrelated #11123 (@erikd), OK? (@bgamari)
Unfortunately my ARM box crashed hard during the build for unrelated reasons (I believe). I'll give it another shot.
snip
- MacOS: ?
This is running.
OS X failed with errors, rts/Linker.c:6943:37: error: error: no member named 'alignment' in 'struct section_64' StgWord alignment = shdr[i].alignment; ~~~~~~~ ^ rts/Linker.c:6954:13: error: error: use of undeclared identifier 'addr' addr = allocMem(size,alignment,&alloc,&misalignment); ^ rts/Linker.c:6954:45: error: error: use of undeclared identifier 'alloc' addr = allocMem(size,alignment,&alloc,&misalignment); ^ rts/Linker.c:6954:52: error: error: use of undeclared identifier 'misalignment'; did you mean 'alignment'? addr = allocMem(size,alignment,&alloc,&misalignment); ^~~~~~~~~~~~ alignment rts/Linker.c:6943:17: error: note: 'alignment' declared here StgWord alignment = shdr[i].alignment; ^ rts/Linker.c:6955:20: error: error: use of undeclared identifier 'addr'; did you mean 'shdr'? memset(addr,0,size); ^~~~ shdr /usr/include/secure/_string.h:77:27: error: note: expanded from macro 'memset' __builtin___memset_chk (dest, val, len, __darwin_obsz0 (dest)) ^ rts/Linker.c:6771:21: error: note: 'shdr' declared here struct section *shdr; ^ rts/Linker.c:6955:20: error: error: use of undeclared identifier 'addr'; did you mean 'shdr'? memset(addr,0,size); ^~~~ shdr /usr/include/secure/_string.h:77:59: error: note: expanded from macro 'memset' __builtin___memset_chk (dest, val, len, __darwin_obsz0 (dest)) ^ /usr/include/secure/_common.h:38:55: error: note: expanded from macro '__darwin_obsz0' #define __darwin_obsz0(object) __builtin_object_size (object, 0) ^ rts/Linker.c:6771:21: error: note: 'shdr' declared here struct section *shdr; ^ rts/Linker.c:6963:39: error: error: use of undeclared identifier 'offset' && ((oc->memberOffset + offset) % alignment == 0)) { ^ rts/Linker.c:6964:21: error: error: use of undeclared identifier 'fd' if (fd == -1) { ^ rts/Linker.c:6965:21: error: error: use of undeclared identifier 'fd' fd = open_(oc->memberPath, O_RDONLY); ^ rts/Linker.c:6967:21: error: error: use of undeclared identifier 'fd' if (fd != -1) { ^ rts/Linker.c:6974:21: error: error: use of undeclared identifier 'addr' addr = mapObjectFileSection(fd, ^ rts/Linker.c:6974:28: error: error: implicit declaration of function 'mapObjectFileSection' is invalid in C99 [-Werror,-Wimplicit-function-declaration] addr = mapObjectFileSection(fd, ^ rts/Linker.c:6975:68: error: error: use of undeclared identifier 'offset' oc->memberOffset + offset, ^ rts/Linker.c:6974:49: error: error: use of undeclared identifier 'fd' addr = mapObjectFileSection(fd, ^ rts/Linker.c:6977:50: error: error: use of undeclared identifier 'misalignment'; did you mean 'alignment'? &misalignment); ^~~~~~~~~~~~ alignment rts/Linker.c:6943:17: error: note: 'alignment' declared here StgWord alignment = shdr[i].alignment; ^ rts/Linker.c:6978:25: error: error: use of undeclared identifier 'addr'; did you mean 'shdr'? if (addr == NULL) goto fail; ^~~~ shdr rts/Linker.c:6771:21: error: note: 'shdr' declared here struct section *shdr; ^ rts/Linker.c:6979:21: error: error: use of undeclared identifier 'alloc' alloc = ALLOC_MMAP; ^ rts/Linker.c:7003:17: error: error: use of undeclared identifier 'addr' addr = allocMem(size,alignment,&alloc,&misalignment); ^ rts/Linker.c:7003:49: error: error: use of undeclared identifier 'alloc' addr = allocMem(size,alignment,&alloc,&misalignment); ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] Cheers, - Ben